0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MATLAB 数学建模快速入门的方法分析介绍

MATLAB 2019-09-16 14:57 次阅读

MATLAB 虽然功能很强大,但上手却很容易,尤其是 R2013a 以后的版本, 使用起来更加容易。 现在使用 MATLAB 的一个理念就是像 Word 一样去使用 MATLAB。本讲将通过一个实例介绍如何像使用 Word 一样去使用 MATLAB,真正将 MATLAB 当工具来使用,即使对于从来没有用过 MATLAB 的模友来说,也可以轻松入门。

1.MATLAB 的功能

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

关于MATLAB 数学建模快速入门的方法分析介绍

图1 MATLAB家族产品结构图

2.快速入门案例

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

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

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

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

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

关于MATLAB 数学建模快速入门的方法分析介绍

图2 MATLAB典型科学计算流程

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

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

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

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

关于MATLAB 数学建模快速入门的方法分析介绍

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

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

图2-4导入数据界面

关于MATLAB 数学建模快速入门的方法分析介绍

图4导入数据界面

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

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

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

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

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

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

关于MATLAB 数学建模快速入门的方法分析介绍

图5 MATLAB绘图面板中的图例

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

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

>> plot(DateNum,Pclose)

关于MATLAB 数学建模快速入门的方法分析介绍

图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, closeall

%导入数据

[~, ~, 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 dataraw;

%%数据探索

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 的外延。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编辑器
    +关注

    关注

    1

    文章

    787

    浏览量

    30115
  • 机器学习
    +关注

    关注

    66

    文章

    8088

    浏览量

    130506
  • 数据分析
    +关注

    关注

    2

    文章

    1345

    浏览量

    33723
收藏 人收藏

    评论

    相关推荐

    讲解MATLAB/Simulink HDL使用入门

    我们将使用实例讲解MATLAB / Simulink HDL 使用入门
    的头像 发表于 11-06 09:12 589次阅读
    讲解<b class='flag-5'>MATLAB</b>/Simulink HDL使用<b class='flag-5'>入门</b>

    自适应微带相控阵天线建模模块设计

    基于matlab结合matlab-feko-APIs接口函数库可以实现对FEKO的二次开发,在CADfeko上实现复杂结构+重复性结构问题的快速仿真建模,其可以兼顾CADFEKO的直观
    的头像 发表于 10-19 09:48 283次阅读
    自适应微带相控阵天线<b class='flag-5'>建模</b>模块设计

    基于全桥电磁暂态快速模型的SVG建模验证方法

    之前我们介绍过根据单个子模块的运行状态搭建的MMC全桥子模块电磁暂态快速模型建模方法
    的头像 发表于 10-07 10:25 1025次阅读
    基于全桥电磁暂态<b class='flag-5'>快速</b>模型的SVG<b class='flag-5'>建模</b>验证<b class='flag-5'>方法</b>

    MATLAB数学建模编程资料

    工程计算、数学建模、计算机模拟、算法研究、数据分析与处理、科学与工程绘图、应用软件开发、数值计算、图形、图像处理,支持递归函数,还有多种工具箱(不同领域)。
    发表于 09-22 08:19

    MATLAB编程在优化中的应用介绍

    资源。近年来,优化技术没有发生显著变化,但应用领域却以显著的速度迅速发展。在专业实践中成功嵌入优化的使用至少需要三个先决条件。它们包括设计问题的数学建模、计算机编程知识和优化技术知识。现在有许多特殊
    发表于 09-21 07:07

    技术资讯 | 复杂电路分析与简化方法

    了许多数学分析和电磁学的方法。在该理论发展的早期,设计师会遇到电路的基本构建模块以及电路简化的入门协议。虽然这些是电路的基础,并且几乎适用于任何电路,但还有很多情况需
    的头像 发表于 07-31 17:10 935次阅读
    技术资讯 | 复杂电路<b class='flag-5'>分析</b>与简化<b class='flag-5'>方法</b>

    matlab对信号进行傅里叶变换

    傅氏变换分析是信号分析中很重要的方法,借助matlab可以很方便的对各类信号进行傅氏频域分析。本文介绍
    的头像 发表于 07-19 10:10 1338次阅读
    用<b class='flag-5'>matlab</b>对信号进行傅里叶变换

    MATLAB语言编程方法 MATLAB实现信号通过系统的仿真

    实现信号通过系统的仿真方法。  实验任务  1、利用MATLAB指令完成对图三系统的频域分析,结合实验三所得xinhao1信号的频谱特征,说明它对xinhao1信号的处理作用。  2、已知系统为    
    发表于 07-18 16:51 0次下载

    matlab基础入门

      1-1、基本运算与函数  在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(》》)之后,并按入Enter键即可。例如:  》》 (5*2+1.3-0.8)*10/25  ans
    发表于 07-18 15:00 0次下载

    关于MATLAB求导实践的总结

    MATLAB是一个功能强大的数值计算软件,提供了多种方法来进行求导操作。在实践中使用MATLAB进行求导可以帮助我们解决各种科学、工程和数学问题。下面是一份
    的头像 发表于 07-17 12:33 959次阅读

    matlab

    主题和自动控制理论相关,例如对某一系统进行数学建模,求解出传递函数,研究其在不同输入下的响应,通过matlab进行仿真,写出仿真程序,以及 不同输入情况下的仿真曲线。
    发表于 06-12 19:50

    锁相环(PLL)建模及仿真分析

    behavior model,即建立行为级模型。主要采用matlab、veriloga等工具,对设计进行行为级建模
    的头像 发表于 06-02 15:25 4980次阅读
    锁相环(PLL)<b class='flag-5'>建模</b>及仿真<b class='flag-5'>分析</b>

    MATLAB入门情况

    MATLAB入门情况
    发表于 05-15 10:05 0次下载

    常用UML建模工具介绍

    模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一
    的头像 发表于 05-05 11:09 2074次阅读

    瑞萨 38D5 入门套件快速入门指南

    瑞萨 38D5 入门套件快速入门指南
    发表于 04-28 19:43 0次下载
    瑞萨 38D5 <b class='flag-5'>入门</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入门</b>指南