《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会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)
运行结果(由于是生成随机数,多次运行结果可能不同。)
Name Size Bytes Class Attributes
Data_Num 1×1 8 double
Mean_Value 1×1 8 double
STD_Value 1×1 8 double
x 100×1 800 double
x_dataset 100×1 2300 dataset
mean_x =
-0.0684
std_x =
0.9568
x: [100×1 double]
min 1st quartile median 3rd quartile max
-2.8216 -0.7437 -0.088884 0.63638 2.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)
%MEAN Average 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