目录
2.1.3 快速入门案例
2.2 matlab常用技巧
2.3 matlab开发模式
第二章所用数据
最好的学习方式是基于项目学习(Project Based Learning, PBL),这让学习的目标更具体,更容易让学习的知识转化成实实在在的成果,让学习者觉得学有所成,并快速建立自信
第一阶段 : 利用matlab从外部(Excel)读取数据
step1.1 在当前文件夹中选取需要的数据文件(案例中为Excel),右击
step1.2 选择导入数据项,显示下图
step1.3 在该界面右上角有个“导入所选内容” ,输出类型选择列向量
第二阶段:数据探索和建模
step2.1 查看数据统计信息,了解数据。双击工作区(顶部蓝色背景区)得到所有变量的详细统计信息。
(但是我一开始只有“名称”和“值”两栏,所以右击那一栏就可以多选几个表头,如下图)
step2.2 在工作区选中变量DataNum(日期)和Pclose(收盘价),在绘图面板中单击plot图标,得到两个变量可视化结果
或者说在命令窗口区显示绘制此图的命令
plot(DateNum,Pclose)
然后需要考虑如何评估股票的价值和风险。经过分析,我们要计算曲线斜率和最大回撤,计算斜率用多项式拟合的方法来拟合该组数据,但是对于新手来说,并不清楚用什么命令进行拟合,因此在主面板靠近右侧单击“帮助”打开帮助系统,在搜索框搜索关键词“polyfit”即可查阅
具体代码:
step2.3 多项式拟合,计算股票价值
>>p =polyfit(DateNum,Pclose,1); %多项式拟合
>> value = p(1) %将斜率赋值给value,作为股票的价值
value =
0.122
step2.4 得到计算最大回撤的代码
>> MaxDD= maxdrawdown(Pclose); %计算最大回撤
>> risk = MaxDD %将最大回撤赋值给risk,作为股票风险
risk=
0.1155
命令行不能很方便的修改代码,脚本才是matlab中最经典的用法,它不仅能否完整地呈现整个问题的解决方法,而且便于维护、完善、执行。
step2.5 像step1.1 ,重新选择数据文件并右击,在快捷菜单中选择“导入数据”项,选择“生成脚本”,并保存
step2.6 从命令历史中选择有用的命令复制到2.5,得到完整脚本
%% 导入数据
clc, clear, close all
% 导入数据
[~, ~, raw] = xlsread('sz000004.xls','Sheet1','A2:H99');
% 创建输出变量
data = reshape([raw{:}],size(raw));
% 将导入的数组分配给列变量名称
Date = data(:,1);
DateNum = data(:,2);
Popen = data(:,3);
Phigh = data(:,4);
Plow = data(:,5);
Pclose = data(:,6);
Volum = data(:,7);
Turn = data(:,8);
% 清除临时变量
clearvars data raw;
%% 数据探索
figure % 创建一个新的图像窗口
plot(DateNum,Pclose,'k') % 更改图的的颜色的黑色(打印后不失真)
datetick('x','mm');% 更白日期显示类型
xlabel('日期'); % x轴说明
ylabel('收盘价'); % y轴说明
figure
bar(Pclose) % 作为对照图形
%% 股票价值的评估
p = polyfit(DateNum,Pclose,1); % 多项式拟合,
% 分号作用为不在命令窗口显示执行结果
P1 = polyval(p,DateNum); % 得到多项式模型的结果
figure
plot(DateNum,P1,DateNum,Pclose,'*g'); % 模型与原始数据的对照
value = p(1) % 将斜率赋值给value, 作为股票的价值。
%% 股票风险的评估
MaxDD = maxdrawdown(Pclose); % 计算最大回撤
risk = MaxDD % 将最大回撤赋值给risk, 作为股票的风险
第三阶段:发布
展示形式:
①能独立运行的程序
②报告或论文(常用且实用)
③软件和应用(更适合大中型项目)
step3.1 在脚本编辑器的“发布”面板,从其下拉菜单中选择“编辑发布”选项,打开发布“编辑配置”界面
step3.2 将输出文件格式改为word(word更常用,便于编辑,尤其是对于写报告或论文),然后单击“发布”按钮
2.2.1 常用标点的功能
在英文状态下输入
常见标点符号功能
逗号(,) 用作要显示计算结果的指令与其后面的指令之间的分隔;用作输入量与输入量 之间的分隔;用作数组元素的分隔。
分号(;) 用作不显示计算结果指令的结尾标志;用作不显示计算结果的指令与其后面的 指令之间的分隔;用作数组行间的分隔。
冒号(:) 用以生成一维数值数组;用作单下标援引时,表示全部元素构成的长列;用作多 下标援引时,表示对应维度上的全部元素。
注释号(%) 由它起头的所有物理行被视为非执行的注释。
单引号(‘’) 字符串标记符。
圆括号() 在数组援引时用;函数指令时表示输入变量。
方括号[] 输入数组时用;函数指令时表示输出变量。
花括号{ } 元胞数组标记符。
续行号(...) 由三个以上连续黑点构成。可视为其下的物理行是该行的逻辑继续,以构成一个较长的完整指令。
2.2.2 常见指令操作
clc 清除指令窗口中显示的内容。 clear 清除MATLAB工作空间中保存的变量。 close all 关闭 所有打开的图形窗口。 clf 清除图形窗的内容 edit 打开m文件编辑器。 disp 显示变量的内容
2.2.3 指令编辑操作键
↑ 前寻调回已输入过的指定行。 ↓ 后寻调回已输人过的指定行。 Tab 补全命令。
元胞数组是matlab中的一种特殊数据类型,可以将元胞数组视为无所不包的通用矩阵,或叫广义矩阵。组成元胞数组的元素可以是任何数据类型的常数或常量。
表在支持数据类型方面与元胞数组相似,能包含所有数据类型,但表在展示数据操作数据上更有优势。
2.3.1 命令行模式
即在命令行窗口区进行交互式的开发模式。命令行模式非常灵活,并且能够很快给出结果。所以适合单个的小型科学计算问题的求解,比如解方程、拟合曲线等操作;也比较适合项目的探索分析、建模等工作,比如在入门案例中介绍的数据绘图、拟合,求最大回撤。命令行模式的缺点是不便于重复执行,也不便于自动化执行科学计算任务。
2.3.2 脚本模式
脚本模式是MATLAB最常见的开发模式,在该模式,我们可以很方便地进行代码的修改,也可以继续更复杂的任务。脚本模式的优点是便于重复执行计算,并可以将整个计算过程保存在脚本中,移植性比较好,同时也非常灵活。
2.3.3 面向对象模式
面向对象编程是一种正式的编程方法,它将数据和相关操作(方法)合并到逻辑结构(对象)中。该方法具有可提升管理软件复杂性的能力,在开发和维护大型应用与数据结构时尤为重要。 能够在MATLAB中定义类并应用面向对象的标准设计模式,可实现代码重用继承、封装以及参考行为,。MATLAB面向对象开发模式更适合稍微复杂一些的项目,更有效地组织程序的功能模块,便于项目的管理、重复使用,同时使得项目更简洁,更容易维护。
2.3.4 三种模式配合
三种开发模式并不是孤立的,而是相互配合、不断提升的。在项目初期,基本以命令行的脚本模式为主,逐渐形成脚本;随着成熟度天生,就要使用面向对象的开发模式,将功能模块改写成函数的形势,加强程序重复调用。
链接:https://pan.baidu.com/s/1o9dhGCkOS3FC9iYZm1nhQg?pwd=zjvv
提取码:zjvv