作为前阵子被禁用的Matlab到底有怎样的魔力呢?Matlab毫无疑问是理工生的科研神器,在各大建模比赛中也被高频使用,下面就来聊聊Matlab的一些“奇技淫巧”。

基础用法

01

命令窗口的使用

MATLAB命令窗口

“>>”光标的闪烁一起说明系统就绪,等待输入。

一般可在命令窗口中直接输入代码,然后按回车键,可以直接弹出输出结果。如果想要输入多行代码而不想让结果立马出来,可按住shift键同时敲击回车,或者直接在不想输出结果的那一行代码后直接加“;”。

例如计算[52×(36+8)-12]÷2-3;

其中,“ans”是“answer”的缩写,这也是MATLAB预定义的变量。

02

创建M文件

当我们需要编码的代码较多时,常常需要新建一个脚本文件,并把它保存在电脑中,而这脚本文件是以“.m”结尾的,MATLAB所保存的文件常为M文件。点击新建,我们可以选择新建一个脚本文件或者一个函数文件,而函数文件需要在脚本文件或者是命令行窗口调用之后才可使用。

新建的脚本文件

新建的M文件在保存时需要重新命名,当然也可用他的默认命名。在保存成功后,在下一次使用或者修改时可以直接点击打开并找到所需要使用或编辑的文件。新建的函数文件带有默认的形参,返回变量和函数名,按照需要修改即可。

03

MATLAB简单计算

MATLAB所用计算符号与常见编程软件类似,“+”代表加,“-”代表减,“*”代表乘,“/”代表除,“^”代表指数运算,要清楚的是MATLAB里面的运算均为矩阵运算,一般情况下我们所用的都是一个数。若实现矩阵的对应各个数的运算则需要在运算符号前加“.”。

如下图:

注:设置矩阵时用“[]”,如果是隔列,则用“,”或者空格隔开,如果是换行则用“;”隔开。

运算结果如下:

注:如果在写代码过程中所在行的代码不需要在最终运行时显现出来,则可用这行代码后加上“;”。

04

数组

(1)一维数组

可采用直接输入法、步长生成法和等间距线型生成法来生成对应数组。直接输入法:通过空格,逗号,分号来分隔数组元素,在数组中输入任意元素。如下图:

步长生成法:x=a:step:b。

等间距线型生成法:x=linspace(a,b,n),表示在a到b区间内生成n个采样点数据。

(2)二维数组

二维数组可采用直接输入法或者内置函数法来生成对应数组。直接输入法:同行之间元素用逗号或者空格分隔,不同行之间用分号分隔。

内置函数法,如zeros,ones,rand等。

zeros函数生成对应行列数的元素全为零的矩阵。

ones函数则是生成对应行列数的元素全为1的矩阵。

rand函数则是生成对应行列数的随机元素(取值为0到1)的矩阵。

(3)数组寻访

如下图:

通过a(2,3),a(2,:),a(:,1)等命令可以实现对数组内部分的调用。

(4)最大最小值搜索

通过max,min函数可寻找到矩阵中每一列的最大最小数的大小和位置。

05

for,if,while语句

与其他编程语言类似,for和while语句用于循环结构,if用于条件语句,即判断。基本格式为

其中在循环结构中也可用break,continue语句。

06

文件读取

(1)工作空间文件读取

在MATLAB中可以将工作空间的变量保存为文件,可以从文件中导入数据为保存变量,常用命令为save函数。save:将当前工作区的所有变量以二进制格式保存到文件matlab.mat文件中,不同类型的数据按照对应的最大精度保存,并保存对应的变量名称。

save(‘filename’,’var1’,’var2’):将工作空间内指定变量保存到文件filename.mat中。

load:加载matlab.mat中所有的变量,如果文件不存在则返回错误。

load filename:加载指定文件filename中的所有变量,加载时根据文件后缀确定文件的读入方式。

(2)常用的数据导入和导出函数

绘制2D/3D图像

01

二维图形绘制

plot函数是Matlab绘制二维图形的常用函数,该函数将数组中的数据点绘制在坐标平面上,通过直线将这些点连起来构成一条连续的曲线。主要的命令格式如下:

(1)plot(x,’Name’,Value)

x表示绘制图表的数据,Name表示属性的字符选项,Value表示相应的选值。当x是一维数组时,以数组元素下标为横坐标,元素数值为纵坐标绘制曲线;当x是二维数组时,数组的每列元素为纵坐标,数组的下标为横坐标绘制多条曲线。

(2)plot(x,y,’Name’,Value)

当x和y为同维数组时,分别以x和y为横纵坐标绘制曲线。

(3)plot(x1,y1,x2,y2,’Name’,Value)

在窗口中同时绘制以x1和y1,x2和y2等分别为横纵坐标的曲线。

结果如图:

02

线性、标记和颜色

Matlab中常见的线形、标记符和颜色如下图所示。

使用不同线形、颜色绘制正弦函数代码如下:

结果如图:

03

三维曲线绘制

plot3函数是Matlab绘制三维曲线的常用函数,输入参数时,需要输入第三个参数数组。

plot(x,y,z,LineSpec,’Name’,Value)

如果x、y和z是同维数组(向量、矩阵),分别以对应列作为x、y和z坐标,曲线个数等于矩阵列维数。

04

网格与曲面图绘制

三维网格图相当于在x-y平面上的z坐标定义一个网格面,相邻的点通过直线连接,网格节点就是z的数据点,在Matlab中通过mesh函数实现。

mesh(z):以z矩阵的列和行的下标为x和y轴的自变量绘制网格图;

mesh(x,y,z):x和y为自变量矩阵,z为建立在x和y之上的函数矩阵;

与mesh函数相比,surf函数使曲面上的所有网格都填充了颜色,命令格式与mesh函数类似,但提供了平面阴影和插值阴影。

mesh和surf生成图像结果展示:

建模实战

对乒乓球的弹跳过程进行建模分析其运动过程。忽略空气对球的影响,乒乓球垂直下落,落点为光滑的水平面,乒乓球接触落点立即反弹。如果不考虑弹跳中的能量损耗,则反弹前后的瞬时速率不变,但方向相反。如果考虑撞击损耗,则反弹速率有所降低。我们希望通过仿真得出乒乓球位移随时间变化的关系曲线,并进行弹跳过程的「实时」动画显示。

代码如下:

结果展示:

制 作 | 朱皓轩 申纪宏博 赵锴

出 品 | 仪器光电学生会

北航仪器光电人

微信号 : bhyqgdr2014

matlab 平滑曲线连接_【仪光学习】技能分享 | 前方高能:如何用Matlab轻松实现数学建模...相关推荐

  1. matlab 平滑曲线连接_平滑轨迹插值方法之多项式插值(附代码)

    前言 今天我们来聊聊轨迹插值,在机器人的运动规划和控制领域,参考轨迹的生成是一个历史悠久的问题,已经发展出了一系列的方法.今天我们就来聊一聊轨迹插值领域中最常见的轨迹插值方法:多项式插值. 说明:本文 ...

  2. 华为杯数学建模优秀论文_【优秀论文】2019数维杯国际大学生数学建模竞赛B题优秀论文...

    推荐入群 2020数维杯国际赛参赛群13 2020数维杯国际大学生数学建模竞赛于2020年11月26日08:00(周四)-11月30日08:00(周一)进行,报名正在火热进行中,扫码了解详情或可直接报 ...

  3. 亚太杯数学建模竞赛优秀论文_【优秀论文】2019数维杯国际大学生数学建模竞赛C题优秀论文...

    推荐入群 2020数维杯国际赛参赛群16 2020数维杯国际大学生数学建模竞赛于2020年11月26日08:00(周四)-11月30日08:00(周一)进行,报名正在火热进行中,扫码了解详情或可直接报 ...

  4. 【技术分享】如何用 TLA+ 思维为分布式算法建模

    对于开发过分布式系统的朋友们,相信大家都遇到过这种场景:系统开发完成后,通过了所有的测试用例,于是我们信心满满地将系统上线.可是线上系统跑着跑着,不知哪一天突然莫名其妙地出现了一些 bug.当我们打开 ...

  5. st-link v2怎么连接_深度学习之 YOLO v1,v2,v3详解 - 一杯清酒邀明月

    (写在前面:如果你想 run 起来,立马想看看效果,那就直接跳转到最后一张,动手实践,看了结果再来往前看吧,开始吧······) 一.YOLOv1 简介 这里不再赘述,之前的我的一个 GitChat ...

  6. mapinfo图层导入奥维_(通信技能分享)怎样把谷歌地球上画的路线图导入到测试软件中!...

    对于我们外场的工作人员来说,路线图很重要,但是有些我们没有去过现场,测试过程中又不好看手机看地图,今天我们就来学习一下如何通过谷歌地图画线路图,然后做成tab图层导入测试软件里面去. 1.我们需要先画 ...

  7. jenkins 下载插件 一直失败_实用测试技能分享:jmeter+Jenkins性能测试自动化搭建...

    这阶段有幸接手了公司新产品的测试,所以一直都很忙.后台收到一些同学的私信,想多了解下性能测试,正好闲暇之余,终于有时间总结了一些性能测试实践经验和测试过程,就跟大家聊一聊. 性能测试用来保证产品发布后 ...

  8. 基于matlab的能级_波函数及几率密度图形的绘制,基于MATLAB的能级波函数及几率密度图形的绘制.pdf...

    基于MATLAB的能级波函数及几率密度图形的绘制.pdf 第 卷 第 期 大 学 物 理 实 验 年 月 出版 壬 刃协 卫 印 文 章编 号 一 ' 一 一 基 于 的能级 . 波 函数 及 几 率 ...

  9. matlab error函数_深度对比Python(Numpy,Scipy)与Matlab的数值精度

    CSDN原文:https://blog.csdn.net/cauchy7203/article/details/107785295 Matlab一度被认为是最专业的数值计算工具之一,相信许多同学都或多 ...

最新文章

  1. python Counter类
  2. 逆变式x线装置有利于计算机控制吗,爱爱医资源射医学技术模拟试卷相关专业知要点分析.doc...
  3. Linux 防火墙工具--iptables
  4. 【2019暑假刷题笔记-链表】总结自《算法笔记》
  5. Android 第二课 Intent
  6. “既然计划没有变化快,那制订计划还有个卵用啊!”
  7. java dom创建xml文件_Java 如何使用dom方式读取和创建xml文件
  8. 北大校友的算法被玩出新高度,AI自动化在线抠图
  9. tomcat启动异常:org.apache.catalina.deploy.WebXml addFilter或者the JDBC Driver has been forcibly unregister
  10. 威胁快报|Nexus Repository Manager 3新漏洞已被用于挖矿木马传播,建议用户尽快修复...
  11. BGP路由聚合原理和实验(华为设备)
  12. 2021年4月程序员工资统计,平均14596元。南京程序员收入挤进一线。
  13. 反编译apktool
  14. LabView的简单例题,尽量做到一题多解
  15. win10打印服务器纸规格没有显示,win10系统打印机添加了自定义的纸张却找不到的操作办法...
  16. HTML, CSS学习笔记(完整版)
  17. C#结合数据库开发通讯录管理系统
  18. PyTorch搭建卷积神经网络(ResNet-50网络)进行图像分类实战(附源码和数据集)
  19. 前端导出Excel,修改字体样式以及居中等
  20. 成都房地产市场火爆,房价走势之数据分析

热门文章

  1. angular2创建应用_如何使用Angular和SQLite3创建Electron应用程序。
  2. node redis集群_如何使用集群扩展Node.js服务器
  3. springmvc php,SpringMVC 常用注解
  4. python用线性回归预测股票价格
  5. redis数据库及与python交互
  6. Python网络编程——socket套接字实现UDP/TCP信息传输
  7. 选择适合自己的 OLAP 引擎,干货
  8. ExtJs 备忘录(2)—— Form表单(二) [ 控件封装 ]
  9. Ext Designer
  10. 如何过滤某一频率的声音