《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

摘要:
MATLAB是一个非常庞大的体系,其官方工具箱就有数十种,内部函数有数百个,可以说学习MATLAB是一件没有尽头的事情。想来自己接触MATLAB已经有快10年的时间了,在学习MATLAB的道路上接触很多志同道合的朋友,希望这篇简单的“N分钟学会MATLAB(60”能成为你认识、学习MATLAB的好助手。为什么MATLAB叫做MATLAB?在较新版本中,MATLAB引入了命令自动补全功能,使用Tab键能自动补全MATLAB命令或给出所有可能的补全命令列表。

http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html

《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

《量化投资:以MATLAB为工具》简介

《量化投资:以MATLAB为工具》是由电子工业出版社(PHEI)下属旗舰级子公司——北京博文视点资讯有限公司出版的《量化投资与对冲基金丛书》之一,丛书主编为丁鹏博士,《量化投资:以MATLAB为工具》由李洋(faruto)、郑志勇(ArisZheng)编著,主要介绍MATLAB在量化投资中的具体应用。该书预计2014年10月上市,欢迎大家多多支持。在书籍上市之前,会在中国量化投资学会的各种网络平台进行系列连载介绍,方便读者提前一窥书籍概要。

《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

引言

之所以采用下文这种Q&A的形式来作为《量化投资:以MATLAB为工具》的基础篇,是想让刚刚接触MATLAB的读者能快速有效地了解MATLAB,毕竟在一个注重时间效率的年代大家更喜欢速成的东西。

本篇形式上参考了刘思喆老师的《153分钟学会R》,当然内容方面结合了MATLAB本身的特色,本篇的内容来源多样,既有来自于MATLAB的官方帮助文档,也有来自我个人的一些总结,还有若干来自MATLAB技术论坛(http://www.matlabsky.com)的讨论问题。

MATLAB是一个非常庞大的体系,其官方工具箱就有数十种,内部函数有数百个,可以说学习MATLAB是一件没有尽头的事情。

想来自己接触MATLAB已经有快10年的时间了,在学习MATLAB的道路上接触很多志同道合的朋友,希望这篇简单的“N分钟学会MATLAB(60”能成为你认识、学习MATLAB的好助手。

李洋(faruto)

基础知识

(1)MATLAB是做什么的?为什么MATLAB叫做MATLAB?

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是Matrix和Laboratory两个词的组合,意为矩阵工厂(矩阵实验室),之所以叫做矩阵工厂(矩阵实验室),是因为MATLAB的基本数据单位是矩阵。

(2)MathWorks公司的创始人是谁?

Cleve Moler和Jack Little是MathWorks公司的创始人。其中Cleve Moler是MATLAB首个版本的开发者,Jack Little是信号处理工具箱和控制系统工具箱早期版本的共同开发者和首席架构师。

(3)我是新手,我如何开始学习MATLAB?

如果你的英文阅读还算可以,那么MATLAB官方的帮助文档将是最好且最全面的学习材料,你可以通过在MATLAB的命令窗口(Command Window)中键入“doc”来调出MATLAB官方的帮助文档,或者你也可以在MathWorks公司的官方网站的文档中心(http://www.mathworks.cn/cn/help/documentation-center.html)中查看在线的MATLAB官方帮助文档。

另外MathWorks公司的官方网站的用户中心(http://www.mathworks.cn/matlabcentral/)中有一些MATLAB相关问题的讨论以及一些MATLAB大牛的博客,其中包括Cleve Moler的博客——Cleve's Corner(http://blogs.mathworks.com/cleve),在MATLAB用户中心你可以学习MATLAB。

MATLAB技术论坛(http://www.matlabsky.com)是一个不错的学习MATLAB的中文网站,本书的作者之一李洋(faruto)是MATLAB技术论坛核心管理团队的成员之一,在这个论坛里你可以找到大量的学习资料(代码、数据、视频等)或直接提出问题同大家讨论。

当然,你也可以购买一些MATLAB相关的中外文书籍进行学习。

(4)使用MATLAB需要很厉害的编程能力吗?

大多数时候并不需要,因为MATLAB有很多的函数和工具箱,官方的工具箱还有数十种,第三方的工具箱不计其数而且每天都在增加,你用到的一般方法和函数都可以在MATLAB的工具箱中找到。

(5)能否简单举一个MATLAB的例子?

生成100个高斯(正态)分布随机数,并对这100个数进行特征描述。

MATLAB代码

Mean_Value = 0;

STD_Value = 1;

Data_Num = 100;

x = random('Normal', Mean_Value, STD_Value, Data_Num, 1);

x_dataset = dataset(x);

whos

mean_x = mean(x)

std_x = std(x)

summary(x_dataset)

运行结果(由于是生成随机数,多次运行结果可能不同。)

NameSizeBytesClassAttributes

Data_Num1x1 8double

Mean_Value1x18double

STD_Value1x18double

x100x1800double

x_dataset100x12300dataset

mean_x =

-0.0684

std_x =

0.9568

x: [100x1 double]

min1st quartilemedian3rd quartilemax

-2.8216-0.7437-0.0888840.636382.3738

(6)如何查看使用的MATLAB的版本信息以及内存信息?

以通过在MATLAB的命令窗口(Command Window)中键入“version”和“memory”来查看所使用的MATLAB版本信息和内存信息。

运行结果(由于MATLAB版本的不同以及电脑配置的不同,运行结果可能不同。)

>> version

ans =

7.14.0.739 (R2012a)

>> memory

Maximum possible array:444 MB (4.659e+08 bytes) *

Memory available for all arrays:1190 MB (1.248e+09 bytes) **

Memory used by MATLAB:427 MB (4.476e+08 bytes)

Physical Memory (RAM):3327 MB (3.489e+09 bytes)

*Limited by contiguous virtual address space available.

** Limited by virtual address space available.

(7)MATLAB支持中文吗?

支持!但在MATLAB中,有相当一部分工具箱的作者都是以英文为母语的,故建议熟练全英文环境。

(8)MATLAB支持自动补全(Tab Completion)么?

支持!在较新版本中,MATLAB引入了命令自动补全功能,使用Tab键能自动补全MATLAB命令或给出所有可能的补全命令列表。

(9)MATLAB有哪些常用的热键?

MATLAB除了支持常见的Windows热键(复制:Ctrl+C,剪切:Ctrl+X,粘贴:Ctrl+P等等),在MATLAB文件编辑器(Editor)中,还有如下一些常见的热键:

F5:运行当前的M文件;

F9:运行选中的代码段;

Ctrl+R:注释选中的代码段;

Ctrl+T:反注释选中的代码段;

Ctrl+I:将选中的代码段智能缩进调整。

(10)如何清除变量?

使用clear命令可以清除工作空间(Workspace)中的所有变量,清除工作空间(Workspace)名字为name的变量,使用clear name命令。

(11)如何清空命令窗口(Command Window)?

使用clc命令可以清空命令窗口(Command Window)。

(12)MATLAB常用的数据类型有哪些?

MATLAB支持的基本数据类型有基本数值类型、字符串、元胞数组、结构、函数句柄、Java对象、逻辑类型等等。

其中基本数值类型包括基本数值类型包括双精度类型、单精度类型、整数类型等。

(13)如何查看函数的代码?

MATLAB文件编辑器(Editor)菜单栏中可以使用file->Open直接打开相关M文件查看源码,或者也可以只用edit函数打开,比如

edit mean;

会直接打开求均值函数mean查看源码:

function y = mean(x,dim)

%MEANAverage or mean value.

%For vectors, MEAN(X) is the mean value of the elements in X. For

%matrices, MEAN(X) is a row vector containing the mean value of

%each column.For N-D arrays, MEAN(X) is the mean value of the

%elements along the first non-singleton dimension of X.

%

%MEAN(X,DIM) takes the mean along the dimension DIM of X.

%

%Example: If X = [1 2 3; 3 3 6; 4 6 8; 4 7 7];

%

%then mean(X,1) is [3.0000 4.5000 6.0000] and

%mean(X,2) is [2.0000 4.0000 6.0000 6.0000].'

%

%Class support for input X:

%float: double, single

%

%See also MEDIAN, STD, MIN, MAX, VAR, COV, MODE.

%Copyright 1984-2009 The MathWorks, Inc.

%$Revision: 5.17.4.5 $$Date: 2010/09/02 13:35:22 $

if nargin==1,

% Determine which dimension SUM will use

dim = find(size(x)~=1, 1 );

if isempty(dim), dim = 1; end

y = sum(x)/size(x,dim);

else

y = sum(x,dim)/size(x,dim);

end

(14)MATLAB里面可以使用科学计数法么?

可以。

1e10 = 1000000000

1.2e-4 = 0.00012

更多内容参见《量化投资:以MATLAB为工具》。

该书预计2014年10月上市。

书籍交流论坛:MATLAB技术论坛读书频道《量化投资:以MATLAB为工具》专版,地址:http://www.matlabsky.com/forum-112-1.html

《量化投资:以MATLAB为工具》基础篇-N分钟学会MATLAB文档、代码、数据下载地址

《量化投资:以MATLAB为工具》基础篇部分(N分钟学会MATLAB)的相关文档、代码、数据已经完全免费开源共享,欢迎下载。

百度网盘下载地址:

http://pan.baidu.com/share/link?shareid=1036543686&uk=1761970726

作者简介

李洋(faruto),中国量化投资学会专家委员会成员,MATLAB技术论坛(www.matlabsky.com)联合创始人,北京师范大学应用数学硕士,先后就职于私募、期货公司、保险公司,从事量化投资相关工作。十年MATLAB编程经验,对机器学习、量化投资等相关领域有深入研究,已出版《MATLAB神经网络30个案例分析》和《MATLAB神经网络43个案例分析》等书籍。

邮箱:farutoliyang@foxmail.com

微博:http://weibo.com/faruto

郑志勇(Ariszheng),中国量化投资学会专家委员会成员,方正富邦基金产品总监,北京理工大学运筹学与控制论硕士,先后就职于中国银河证券、银华基金、方正富邦基金,从事金融产品研究与设计工作。十余年MATLAB编程经验,专注于产品设计、量化投资等相关领域的研究,尤其对于各种结构化产品、分级基金产品有着深入的研究,已出版《运筹学与最优化MATLAB编程》和《金融数量分析:基于MATLAB编程》等书籍。

邮箱:ariszheng@gmail.com

微博:http://weibo.com/ariszheng

免责声明:文章转载自《《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springboot开启gzip压缩uni-app 组织架构组件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Matlab griddata函数功能介绍

功能 数据格点格式(1)ZI = griddata(x,y,z,XI,YI)用二元函数z=f(x,y)的曲面拟合不规则的数据向量x,y,z。griddata 将返回曲面z在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的。输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。XI 可以是一行向量,这时XI 指定一有...

Eclipse开发PHP环境配置

首先准备好软件: 1. Apache,到这里找个最新版本 2. PHP,到这里下载 3. Eclipse IDE for Java EE Developers,到这里下载 4. DLTK Core Frameworks 1.0 Integration build,到这里下载 注意:DLTK是所谓动态语言开发包,PDT依赖于它,不知为什么现在官方主页上的稳定...

多分类问题中混淆矩阵(Confusion Matrix)的Matlab画法 | 丕子

在多分类问题中,有一种很实用的分类问题结果统计图。比如说多类别文类问题,那么每一个类别分到其他类别都有一些数据,但是分到自己类别的毕竟多,这样计算百分比之后就形成了一个矩阵,如果分类正确率高的话,那么对角线上的元素的值,也就是自己到自己的那一部分,value就大。我最近也在做多分类问题,要画这样的图,但是发现确实很少有代码,自己画的确实不好看,还牵扯到值的...

GO 解决使用bee工具,报 bash: bee: command not found

我最近使用beego时,遇到以下问题:command not found使用vscode时,运行bee run,报以下错  我查到一篇文章csdn,说用拷贝bee.exe方法,我觉得纯扯淡 如何解决? 通常这种情况常在windows出现,苹果还没遇到这个问题,会出现这个问题的环境,往往修改过GOPATH。例如Go 的msi安装是默认会把环境变量配置好,但...

屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!

前阵子,Oracle 发布了一个黑科技 “GraalVM”,号称是一个全新的通用全栈虚拟机,并具有高性能、跨语言交互等逆天特性,真有这么神奇? GraalVM 简介 GraalVM 是一个跨语言的通用虚拟机,不仅支持了 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其他像 Jav...

python修改镜像源

pip升级:python -m pip install --upgrade pip https://www.cnblogs.com/andy9468/p/10319442.html 1、在命令中临时修改 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow 2、永久修改镜像...