第2章 MATLAB数学建模快速入门
2.1 MATLAB快速入门
2.1.1 MATLAB概要
MATLAB是矩阵实验室(Matrix Laboratory)的缩写。MATLAB的基本数据单元是矩阵。
20世纪70年代后期Cleve Moler编写接口程序,取名MATLAB;
1983年,Cleve Moler和工程师Steve Bangert一起用C语言开发了第二代MATLAB专业版。具备数值计算和数据图示化的功能;
1984年,Cleve Moler和John Little成立了Math Works公司,将MATLAB推向市场;
2.1.2 matlab的功能
2.1.3 快速入门案例
基于项目学习(Project Based Learning,PBL)
案例:已知股票的交易数据,试用某种方法来评价这只股票的价值和风险。
典型科学计算流程:
第一步:读入外部数据(excel)
1、选中需要读入的数据,右键选中导入数据;
2、导入后的数据
3、根据需要选择导入的类型
如果不需要处理,就点导入数据即可。导入后在工作区就会有数据。
第2步:数据探索和建模
1、双击工作区导入的数据;
2、数据可视化
命令窗口多了一行命令
如果要了解更多的绘图信息,可以在命令行输入doc或help查看。
输入doc后出现MATLAB文档界面,里面内容很丰富。
3、生成脚本
在导入数据的时候选择“生成脚本”,会自动生成脚本文件,将常用的数据类型和数据都导入。只需要在脚本文件中加入自己的程序即可。读入数据并将数据命名为sz1。
在最后新建一个节,输入如下程序:
%% 数据探索
figure %创建一个新窗口
plot(sz1.DateNum,sz1.Pclose,'k') %将图的颜色设置为黑色
datetick('x','mm') %更改日期显示类型
xlabel('日期') %x轴说明
ylabel('收盘价') %y轴说明
figure %重新创建一个新窗口,作为对比图
bar(sz1.Pclose) %生成柱状图
运行结果:
%% 股票价值评估
p=polyfit(sz1.DateNum,sz1.Pclose,1); %线性拟合
p1=polyval(p,sz1.DateNum); %得到多项式的结果
figure
plot(sz1.DateNum,p1,sz1.DateNum,sz1.Pclose,'*g'); %将原始图和拟合后的曲线对照
value=p(1) %将斜率给value
输出结果:
%% 股票风险的评估
MaxDD=maxdrawdown(sz1.Pclose); %计算最大回撤
risk=MaxDD %将最大回撤赋值给risk,作为股票的风险
输出:
value =
0.1212
risk =
0.1155
第三步:发布
1、脚本
2、论文
3、软件(大中型项目)
脚本在第2步已经完成,现以论文发布为例。
发布后生成的图。
2.1.4 入门后的提高
建议:
1、熟练掌握最常用的基本操作;
2、了解MATLAB开发模式;
3、基于项目学习。
2.2 MATLAB常用技巧
2.2.1 常用标点的功能
逗号(,)用作要显示计算结果的指令及其后面的指令之间的间隔;用作输入量与输出量之间的间隔;用作数组元素的分隔。
分号(;)用作不显示计算结果的标志;用作数组行间的分隔
冒号(:)用以生成一维数值数组;用作单下标援引时,表示全部元素构成的长列;用作多下标援引时,表示对应维度上的全部元素。
注释号(%)
单引号(‘’)字符串标记符
圆括号()数组援引用;函数指令时表示输入变量
方括号[]输入数组时用;函数指令时表示输出变量
花括号{}元胞数组标记符
续行号(…)一列放不下可以用三个连续黑点与下列连续。
2.2.2 常用操作指令
clc 清除窗口内容
clear 清除工作空间变量
close all 关闭所有打开的图形窗口
clf 清除图形窗口的内容
edit 打开m文件编辑器
disp 显示变量的内容
2.2.3 指令编辑操作键
↑ 向前查看输入过的指令行
↓向后查看输入过的指令行
Tab 补全命令
2.2.4 matlab数据类型
元胞数组(cell)可以看成一种特殊数据类型,又称为广义矩阵。元素可以是任何一种数据类型的常数或者常量,每个元素也可以具有不同的尺寸和内存占用空间,每个元素的内容也可以完全不同,所以其元素被称为元胞。并且内存也是动态分配的。
表(table)与元胞数组相似,可以包含所有数据类型。表相当于一个小型数据库。
例:以元胞和表的形式导入数据
2.3 matlab开发模式
2.3.1 命令行模式
适合单个的小型科学计算问题的求解老师和项目的探索分析;
缺点:不便于重复执行,也不便于自动化执行科学计算任务。
2.3.2 脚本模式
可以很方便的修改代码,也可以继续更复杂的任务。优点是便于重复执行计算,并可以将整个计算过程保存在脚本中,移植性比较好,灵活。
2.3.3 面向对象模式
将数据和相关操作合并到逻辑结构中。具有可提升软件复杂性的能力,在开发和维护大型应用与数据结构时尤为重要。
2.3.4 三种模型的配合
三种模式相互配合、不断提升。
初期以命令行的脚本模式为主,然后逐步形成脚本;随着项目不断提升,使用面向对象的开发模式,逐步形成功能模块改写成函数的形式。
还不断需要在命令行测试函数、测试输出等工作,新增功能也需要在脚本模式状态进行完善。三种模式配合是项目代码不断精炼、不断提升的过程。