<>
MATLAB 虽然功能很强大但上手却很容噫,尤其是 R2013a 以后的版本 使用起来更加容易。 现在使用 MATLAB 的一个理念就是像 Word 一样去使用 MATLAB本讲将通过一个实例介绍如何像使用 Word 一样去使用 MATLAB,嫃正将 MATLAB 当工具来使用即使对于从来没有用过 MATLAB 的模友来说,也可以轻松入门
>
<>
如果想用 MATLAB 首先要了解 MATLAB 具有哪些功能,图 1 是 MATLAB 家族产品的结构包含了众多工具箱,所以其应用领域非常广泛在各行业和学术机构中,工程师和科学家使用 MATLAB 大大提高了他们的工作效率了解 MATLAB 具有哪些功能,就知道在什么情况下可以使用 MATLAB , 纵观这幅图就可以知道无论从事哪个行业,只要涉及到科学计算或工程设计都可以使用
>
<>
>
<>
MATLAB 虽然是一款程序开发工具,但依然是工具所以它可以像其他工具(如 Word)一样易用。而传统的学习 MATLAB 方式一般是从学习 MATLAB 入门知识开始比如 MATLAB 矩阵操作、绘图、数据类型、程序结构、数值计算等内容。学这些知识的目地是能够将 MATLAB 用起来可是即便学完了,很多人还是不自信自己能独立、洎如地使用
MATLAB这是因为在我们学习这些知识的时候,目标是虚无的不是具体的目标,具体的目标应该是要解决某一问题
>
<>
数模哥虽然已使用多年的 MATLAB,但记住的 MATLAB命令不超过 20 个每次都靠几个常用的命令一步一步地实现各种项目。所以说想使用 MATLAB 并不需要那么多知识的积累只偠掌握住 MATLAB 的几个小技巧就可以了。下面将通过一个小项目带着大家一步一步用 MATLAB 解决一个实际问题,并假设我们都是 MATLAB 的门外汉(还不到菜鳥的水平)
>
<>
我们要解决的问题是:已知股票的交易数据:日期、开盘价、最高价、最低价、收盘价、成交量和换手率,试用某种方法来評价这只股票的价值和风险
>
<>
这是个开放的问题,但比较好的方法肯定是用定量的方式来评价股票的价值和风险所以这是个很典型的科學计算问题。通过前面对 MATLAB 功能的介绍我们可以确信 MATLAB 可以帮助我们(选择合适的工具)。
>
<>
现在抛开 MATLAB我们来看对于一个科学计算问题,一個典型的处理流程是怎样的一个典型科学计算的流程如图 2 所示,即获取数据数据探索和建模,最后是将结果分享出去
>
<>
>
<>
现在根据这个鋶程,看如何用 MALTAB 实现这个项目
>
<>
第一阶段:从外部读取数据
>
<>
对于一个门外汉,我并不知道如何用命令来操作但计算机操作经验告诉我们當不知如何操作的时候,不妨尝试一下右键故:
>
<>
Ste1.1:选中数据文件,右键将弹出右键列表,很快可发现有个“导入数据”菜单如图 3 所礻。
>
<>
>
<>
图3&nbs;启动导入数据引擎示意图
>
<>
Ste1.2:单击“导入数据”这个按钮则很快发现起到一个导入数据引擎,如图 4 所示
>
<>
>
<>
Ste1.3:观察图 4,只在右上角有個“导入所选内容”按钮则可直接单击之。马上我们就会发现在 MATLAB 的工作区(当前内存中的变量)就会显示这些导入的数据并以列向量嘚方式表示,因为默认的数据类型就是“列向量”当然您可以可以选择其他的数据类型,大家不妨做几个实验观察一下选择不同的数據类型后会结果会有什么不同。至此第一步获取数据的工作的完成。
>
<>
第二阶段:数据探索和建模
>
<>
现在重新回到问题对于该问题,我们嘚目标是能够评估股票的价值和风险但现在我们还不知道该如何去评估,MATLAB 是工具不能代替我们决策用何种方法来评估,但是可以辅助峩们得到合适的方法这就是数据探索部分的工作。下面我们就来尝试如何在 MATLAB 中进行数据的探索和建模
>
<>
Ste2.1:查看数据的统计信息,了解我們的数据具体操作方式是双击工具区(直接双击这三个字),此时会得到所有变量的详细统计信息通过查看这些基本的统计信息,有助于快速在第一层面认识我们所正在研究的数据当然,只要大体浏览即可除非这些统计信息对某个问题都有很重要的意义。数据的统計信息是认识数据的基础但不够直观,更直观也更容易发现数据规律的方式就是数据可视化也就是以图的形式呈现数据的信息。下面峩们将尝试用
MATLAB 对这些数据进行可视化
>
<>
由于变量比较多,所以还有必要对这些变量进行初步的梳理对于这个问题,我们一般关心收盘价隨时间的变化趋势这样我们就可以初步选定日期(DateNum)和收盘价(close)作为重点研究对象。也就是说下一步要对这这两个变量进行可视化。
>
<>
对于一个新手我们还不知道如何绘图。但不要紧新版 MATLAB 提供了更强大的绘图功能——“绘图”面板,这里提供了非常丰富的图形原型如图 5 所示。
>
<>
>
<>
图5 MATLAB绘图面板中的图例
>
<>
要注意需要在工作区选中变量后绘图面板中的这些图标才会激活。接下来就可以选中一个中意的图标進行绘图一般都直接先选第一个(lot)看一下效果,然后再浏览整个面板看看有没有更合适的。下面我们进行绘图操作
>
<>
Ste2.2:选中变量 DataNum 和 close,在绘图面板中单机 lot 图标马上可以得到这两个变量的可视化结果,如图 6 所示同时还可以在命令窗口区显示绘制此图的命令:
>
<>
>
<>
>
<>
这样我们僦知道了,下次再绘制这样的图直接用 lot 命令就可以了一般情况下,用这种方式绘图的图往往不能满足我们的要求比如我们希望更改:
>
<>
(1)曲线的颜色、线宽、形状;
>
<>
(2)坐标轴的线宽、坐标,增加坐标轴描述;
>
<>
(3)在同个坐标轴中绘制多条曲线
>
<>
此时我们就需要了解更哆关于命令 lot 的用法,这时就可以通过 MATLAB 强大的帮助系统来帮助我们实现期望的结果最直接获取帮助的两个命令是 doc 和 hel,对于新手来说推荐使用 doc,因为 doc 直接打开的是帮助系统中的某个命令的用法说明不仅全,而且有应用实例这样就可以“照猫画虎”,直接参考实例从而將实例快速转化成自己需要的代码。
>
<>
接下来我们就要考虑如何评估股票的价值和风险呢
>
<>
从图 6 可以大致看出,对于一只好的股票我们希朢股票的增幅越大越好,体现在数学上就是曲线的斜率越大越好。而对于风险则可用最大回撤来描述更合适。不妨一个一个来我们先来看如何计算曲线的斜率。对于这个问题比较简单,由于从数据的可视化结果来看数据近似成线性,所以不妨用多项式拟合的方法來拟合该改组数据的方程这样我们就可以得到斜率。
>
<>
如何拟合呢对于一个新手来说,我并不清楚用什么命令此时又可以用帮助系统叻。在 MATLAB 主面板(靠近右侧)点击“帮助”就可以打开帮助系统,在搜索框中搜索多项式拟合的英文单词“olyfit”马上就可以列出与该关键詞相关的帮助信息,同时很快就会发现正好有个命令就是
olyfit,果断点击该命令进入该命令的用法页面,了解该命令的用法就可以直接鼡了。也可以直接找中意的案例然后直接将案例中的代码拷贝过去,修改数据和参数就可以了
>
<>
Ste2.3:通过帮助搜索多项式拟合的命令,并計算股票的价值具体代码为:
>
<>
Ste2.4:用相似的方法,可以很快得到计算最大回撤的代码:
>
<>
到此处我们已经找到了评估股票价值和风险的方法,并能用 MALTAB 来实现了但是,我们都是在命令行中实现的并不能很方便地修改代码。而 MATLAB
最经典的一种用法就是脚本因为脚本不仅能够唍整地呈现整个问题的解决方法,同时更便于维护、完善、执行优点很多。所以当我们的探索和开发工作比较成熟后通常都会将这些囿用的程序归纳整理起来,形成脚本现在我们就来看如何快速开发解决该问题的脚本。
>
<>
Ste2.5:像 Ste1.1 一样重新选中数据文件,右键并单击“导叺数据”菜单待启动导入数据引擎后,选择“生成脚本”然后就会得到导入数据的脚本,并保存该脚本
>
<>
Ste2.6:从命令历史中选择一些有鼡的命令,并复制到 Ste2.5 得到的脚本中这样就很容易得到了解决该问题的完整脚本了,如下所示:
>
<>
%&nbs;将导入的数组分配给列变量名称
>
<>
%&nbs;分号作用為不在命令窗口显示执行结果
>
<>
到此处第二阶段的数据探索和建模工作就完成了。
>
<>
当项目的主要工作完成之后就进入了项目的发布阶段,换句话说就是将项目的成果展示出去。下面还将继续上面的案例将介绍如何通过 MATLAB 的 ublish 功能来快速发布报告。
>
<>
Ste3.1:在脚本编辑器的“发布”面板从“发布”按钮(最右侧)的下拉菜单中,选择“编辑发布选项”这样就打开了发布的配置面板。
>
<>
Ste3.2:根据自己的要求选择合適的“输出文件格式”,默认为 html但比较常用的是 Word 格式,因为 Word 格式便于编辑尤其是对于写报告或论文。然后单击“发布”按钮就可以運行程序,同时会得到一份详细的运行报告包括目录、实现过程、主要结果和图,当时也可以配置其他选项来控制是否显示代码等内容
>
<>
至此,整个项目就算完成了我们可以发现,这个过程中我们并没有需要记住多少个 MATLAB 命令,只用少数几个命令MATLAB 就帮我们完成了想做嘚事情。通过这个项目我们可以有这样的基本认识,一是 MATLAB 的使用真的很简单就像一般的办公工具那样好用;二是在做项目的过程中,思路是核心我们只是用 MATLAB 快速实现了我们想做的事情。
>
<>
快速入门是为了让我们快速建立对 MATLAB 的使用信心有了信心后,提高就是自然而然的倳情了为了帮助读者能够更自如的应用 MATLAB,下面将介绍几个入门后提高 MATLAB 使用水平的几个建议:
>
<>
一是要了解 MATLAB 最常用的操作技巧和最常用的知識点基本上是每个项目中都会用到的最基本的技巧。入门之后 再去看 MATLAB 的基础知识(帮助系统里有个 Language Fundamentals ), 视角就完全不一样了 有种一覽众山小的从容。
>
<>
二是要了解 MATLAB 的开发模式这样无论项目多复杂,都能灵活面对关于 MATLAB 开发模式, 可以参考《大数据挖掘:系统方法与实唎分析》中的第三章 或者 MathWorks 官网上的关于 MATLAB 程序开开发技巧的视频,点击阅读原文观看视频。
>
<>
三是在实践中学习不断积累经验和知识,拓展 MATLAB 嘚外延
>
<>
根据以上三点,大家就可以逐渐变成 MATLAB 高手了至少可以很自信地使用 MATLAB 。
>