首页 » 99链接平台 » MATLAB数学建模快速入门(数据命令导入就可以建模)

MATLAB数学建模快速入门(数据命令导入就可以建模)

神尊大人 2024-11-10 00:52:41 0

扫一扫用手机浏览

文章目录 [+]

1. MATLAB 的功能

如果想用 MATLAB 首先要了解 MATLAB 具有哪些功能,图 1 是 MATLAB 家族产品的结构,包含了众多工具箱,所以其应用领域非常广泛。
在各行业和学术机构中,工程师和科学家使用 MATLAB 大大提高了他们的工作效率。
了解 MATLAB 具有哪些功能,就知道在什么情况下可以使用 MATLAB , 纵观这幅图就可以知道,无论从事哪个行业,只要涉及到科学计算或工程设计,都可以使用 MATLAB。

图1 MATLAB 家族产品结构图

MATLAB数学建模快速入门(数据命令导入就可以建模) 99链接平台
(图片来自网络侵删)

2. 快速入门案例

MATLAB 虽然是一款程序开发工具,但依然是工具,所以它可以像其他工具(如 Word)一样易用。
而传统的学习 MATLAB 方式一般是从学习 MATLAB 入门知识开始,比如 MATLAB 矩阵操作、绘图、数据类型、程序结构、数值计算等内容。
学这些知识的目地是能够将 MATLAB 用起来,可是即便学完了,很多人还是不自信自己能独立、自如地使用 MATLAB。
这是因为在我们学习这些知识的时候,目标是虚无的,不是具体的目标,具体的目标应该是要解决某一问题。

数模哥虽然已使用多年的 MATLAB,但记住的 MATLAB命令不超过 20 个,每次都靠几个常用的命令一步一步地实现各种项目。
所以说想使用 MATLAB 并不需要那么多知识的积累,只要掌握住 MATLAB 的几个小技巧就可以了。
下面将通过一个小项目,带着大家一步一步用 MATLAB 解决一个实际问题,并假设我们都是 MATLAB 的门外汉(还不到菜鸟的水平)。

我们要解决的问题是:已知股票的交易数据:日期、开盘价、最高价、最低价、收盘价、成交量和换手率,试用某种方法来评价这只股票的价值和风险。

这是个开放的问题,但比较好的方法肯定是用定量的方式来评价股票的价值和风险,所以这是个很典型的科学计算问题。
通过前面对 MATLAB 功能的介绍,我们可以确信 MATLAB 可以帮助我们(选择合适的工具)。

现在抛开 MATLAB,我们来看对于一个科学计算问题,一个典型的处理流程是怎样的。
一个典型科学计算的流程如图 2 所示,即获取数据,数据探索和建模,最后是将结果分享出去。

图2 MATLAB 典型科学计算流程

现在根据这个流程,看如何用 MALTAB 实现这个项目。

第一阶段:从外部读取数据

对于一个门外汉,我并不知道如何用命令来操作,但计算机操作经验告诉我们当不知如何操作的时候,不妨尝试一下右键,故:

Step1.1:选中数据文件,右键,将弹出右键列表,很快可发现有个“导入数据”菜单,如图 3 所示。

图3 启动导入数据引擎示意图

Step1.2:单击“导入数据”这个按钮,则很快发现起到一个导入数据引擎,如图 4 所示。

图2-4导入数据界面

图4 导入数据界面

Step1.3:观察图 4,只在右上角有个“导入所选内容”按钮,则可直接单击之。
马上我们就会发现在 MATLAB 的工作区(当前内存中的变量)就会显示这些导入的数据,并以列向量的方式表示,因为默认的数据类型就是“列向量”,当然您可以可以选择其他的数据类型,大家不妨做几个实验,观察一下选择不同的数据类型后会结果会有什么不同。
至此,第一步获取数据的工作的完成。

第二阶段:数据探索和建模

现在重新回到问题,对于该问题,我们的目标是能够评估股票的价值和风险,但现在我们还不知道该如何去评估,MATLAB 是工具,不能代替我们决策用何种方法来评估,但是可以辅助我们得到合适的方法,这就是数据探索部分的工作。
下面我们就来尝试如何在 MATLAB 中进行数据的探索和建模。

Step2.1:查看数据的统计信息,了解我们的数据。
具体操作方式是双击工具区(直接双击这三个字),此时会得到所有变量的详细统计信息。
通过查看这些基本的统计信息,有助于快速在第一层面认识我们所正在研究的数据。
当然,只要大体浏览即可,除非这些统计信息对某个问题都有很重要的意义。
数据的统计信息是认识数据的基础,但不够直观,更直观也更容易发现数据规律的方式就是数据可视化,也就是以图的形式呈现数据的信息。
下面我们将尝试用 MATLAB 对这些数据进行可视化。

由于变量比较多,所以还有必要对这些变量进行初步的梳理。
对于这个问题,我们一般关心收盘价随时间的变化趋势,这样我们就可以初步选定日期(DateNum)和收盘价(Pclose)作为重点研究对象。
也就是说下一步,要对这这两个变量进行可视化。

对于一个新手,我们还不知道如何绘图。
但不要紧,新版 MATLAB 提供了更强大的绘图功能——“绘图”面板,这里提供了非常丰富的图形原型,如图 5 所示。

图5 MATLAB绘图面板中的图例

要注意,需要在工作区选中变量后绘图面板中的这些图标才会激活。
接下来就可以选中一个中意的图标进行绘图,一般都直接先选第一个(plot)看一下效果,然后再浏览整个面板,看看有没有更合适的。
下面我们进行绘图操作。

Step2.2:选中变量 DataNum 和 Pclose,在绘图面板中单机 plot 图标,马上可以得到这两个变量的可视化结果,如图 6 所示,同时还可以在命令窗口区显示绘制此图的命令:

>> plot(DateNum,Pclose)

图6 通过 plot 图标绘制的原图

这样我们就知道了,下次再绘制这样的图直接用 plot 命令就可以了。
一般情况下,用这种方式绘图的图往往不能满足我们的要求,比如我们希望更改:

(1)曲线的颜色、线宽、形状;

(2)坐标轴的线宽、坐标,增加坐标轴描述;

(3)在同个坐标轴中绘制多条曲线。

此时我们就需要了解更多关于命令 plot 的用法,这时就可以通过 MATLAB 强大的帮助系统来帮助我们实现期望的结果。
最直接获取帮助的两个命令是 doc 和 help,对于新手来说,推荐使用 doc,因为 doc 直接打开的是帮助系统中的某个命令的用法说明,不仅全,而且有应用实例,这样就可以“照猫画虎”,直接参考实例,从而将实例快速转化成自己需要的代码。

接下来我们就要考虑如何评估股票的价值和风险呢?

从图 6 可以大致看出,对于一只好的股票,我们希望股票的增幅越大越好,体现在数学上,就是曲线的斜率越大越好。
而对于风险,则可用最大回撤来描述更合适。
不妨一个一个来,我们先来看如何计算曲线的斜率。
对于这个问题,比较简单,由于从数据的可视化结果来看,数据近似成线性,所以不妨用多项式拟合的方法来拟合该改组数据的方程,这样我们就可以得到斜率。

如何拟合呢?对于一个新手来说,我并不清楚用什么命令。
此时又可以用帮助系统了。
在 MATLAB 主面板(靠近右侧)点击“帮助”,就可以打开帮助系统,在搜索框中搜索多项式拟合的英文单词“polyfit”,马上就可以列出与该关键词相关的帮助信息,同时很快就会发现,正好有个命令就是 polyfit,果断点击该命令,进入该命令的用法页面,了解该命令的用法,就可以直接用了。
也可以直接找中意的案例,然后直接将案例中的代码拷贝过去,修改数据和参数就可以了。

Step2.3:通过帮助搜索多项式拟合的命令,并计算股票的价值,具体代码为:

>> p = polyfit(DateNum,Pclose,1); % 多项式拟合 >> value = p(1) % 将斜率赋值给value,作为股票的价值 value = 0.1212

Step2.4:用相似的方法,可以很快得到计算最大回撤的代码:

>> MaxDD = maxdrawdown(Pclose); % 计算最大回撤 >> risk = MaxDD % 将最大回撤赋值给risk,作为股票的风险 risk = 0.1155

到此处,我们已经找到了评估股票价值和风险的方法,并能用 MALTAB 来实现了。
但是,我们都是在命令行中实现的,并不能很方便地修改代码。
而 MATLAB 最经典的一种用法就是脚本,因为脚本不仅能够完整地呈现整个问题的解决方法,同时更便于维护、完善、执行,优点很多。
所以当我们的探索和开发工作比较成熟后,通常都会将这些有用的程序归纳整理起来,形成脚本。
现在我们就来看如何快速开发解决该问题的脚本。

Step2.5:像 Step1.1 一样,重新选中数据文件,右键并单击“导入数据”菜单,待启动导入数据引擎后,选择“生成脚本”,然后就会得到导入数据的脚本,并保存该脚本。

Step2.6:从命令历史中选择一些有用的命令,并复制到 Step2.5 得到的脚本中,这样就很容易得到了解决该问题的完整脚本了,如下所示:

%% MATLAB 入门案例 %% 导入数据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,作为股票的风险

到此处,第二阶段的数据探索和建模工作就完成了。

第三阶段:发布

当项目的主要工作完成之后,就进入了项目的发布阶段,换句话说,就是将项目的成果展示出去。
下面还将继续上面的案例将介绍如何通过 MATLAB 的 publish 功能,来快速发布报告。

Step3.1:在脚本编辑器的“发布”面板,从“发布”按钮(最右侧)的下拉菜单中,选择“编辑发布选项”,这样就打开了发布的配置面板。

Step3.2:根据自己的要求,选择合适的“输出文件格式”,默认为 html,但比较常用的是 Word 格式,因为 Word 格式便于编辑,尤其是对于写报告或论文。
然后单击“发布”按钮,就可以运行程序,同时会得到一份详细的运行报告,包括目录、实现过程、主要结果和图,当时也可以配置其他选项来控制是否显示代码等内容。

至此,整个项目就算完成了。
我们可以发现,这个过程中,我们并没有需要记住多少个 MATLAB 命令,只用少数几个命令,MATLAB 就帮我们完成了想做的事情。
通过这个项目,我们可以有这样的基本认识,一是 MATLAB 的使用真的很简单,就像一般的办公工具那样好用;二是在做项目的过程中,思路是核心,我们只是用 MATLAB 快速实现了我们想做的事情。

3. 入门后的提高

快速入门是为了让我们快速建立对 MATLAB 的使用信心,有了信心后,提高就是自然而然的事情了。
为了帮助读者能够更自如的应用 MATLAB,下面将介绍几个入门后提高 MATLAB 使用水平的几个建议:

一是要了解 MATLAB 最常用的操作技巧和最常用的知识点,基本上是每个项目中都会用到的最基本的技巧。
入门之后, 再去看 MATLAB 的基础知识(帮助系统里有个 Language Fundamentals ), 视角就完全不一样了, 有种一览众山小的从容。

二是要了解 MATLAB 的开发模式,这样无论项目多复杂,都能灵活面对。
关于 MATLAB 开发模式, 可以参考《大数据挖掘:系统方法与实例分析》中的第三章, 或者 MathWorks 官网上的关于 MATLAB 程序开开发技巧的视频,点击阅读原文观看视频。

三是在实践中学习,不断积累经验和知识,拓展 MATLAB 的外延。

根据以上三点,大家就可以逐渐变成 MATLAB 高手了,至少可以很自信地使用 MATLAB 。

标签:

相关文章

新媒体广告,变革时代下的传播利器

随着互联网技术的飞速发展,新媒体广告作为一种全新的广告形式,已经成为当今广告行业的重要力量。相较于传统广告,新媒体广告具有传播速度...

99链接平台 2024-12-26 阅读0 评论0

数据不良,挑战与应对之路

随着信息时代的到来,数据已成为推动社会进步的重要力量。数据不良问题日益凸显,对各行各业带来了严峻挑战。本文将从数据不良的定义、成因...

99链接平台 2024-12-26 阅读0 评论0

水卜樱的编程艺术,介绍数据之美

在信息技术飞速发展的时代,编程已成为一种不可或缺的技能。而水卜樱,这位才华横溢的编程大师,以其独特的编程艺术,为数据之美注入了新的...

99链接平台 2024-12-26 阅读0 评论0