本文目录
- 前言
- 声明
- 一、MATLAB简介(基本来自课程内容)
- 二、入门操作
- 2.1 命令窗口(Command Window)
- 2.1.1 基本介绍
- 2.1.2 基础指令
- 2.1.3 常用操作
- 2.2 编辑器窗口(Editor Window)
- 2.2.1 脚本语言
- 三、基本运算和函数
- 3.1 预定义的变量
- 3.2 符号
- 3.3 符号变量的声明
- 3.4 输入输出函数
- 3.5 常用数学函数总结
- 3.6 逻辑运算
- 四、绘图
- 4.1 二维函数图像
- 4.1.1 已知点集——plot
- 4.1.2 符号函数——ezplot, fplot
- 4.1.3 图像处理
- 4.1.4 图像导出
- 4.2 极坐标图 —— polar
- 4.3 三维图形
- 4.3.1 空间曲线图 —— plot3
- 4.3.2 空间曲面
- 4.4 特殊图形
- 4.4.1 填充类图形
- 后续教程
前言
MATALB作为工科生几乎都会用到的科学计算软件,大部分大学应该都会购买其版权,因此安装这个软件的人不在少数,即使它占用了15G+的存储空间。但是我发现其实很多人都不会用这个软件,因为安装的时候就是抱着 “我之后可能会用到,先装以备后用” 的心态安装MATLAB,而我当时就是这样的心态。
这两年,前前后后也接触了不少MATLAB的教程,也遇到过很多需要使用的场景,但是发现一个很严重的问题,那就是一段时间不用,之前记住的命令又忘了,于是趁着这个学期学了数学实验课,加上之前学习的一些课程,想简单地以课程为主线总结一下MATLAB的使用,以作备忘。同时穿插一些课程的知识,就当作再次复习一遍了。
之后如果接触了其他需要使用Matlab的课程,也会继续更新。
其他资料可以参考MATLAB中文论坛
声明
本博客大部分内容来自课程《数学实验》,(少部分来自其他教程)因此本博客不作任何商用,感兴趣的同学欢迎加入MOOC的学习,这是课程链接
一、MATLAB简介(基本来自课程内容)
数学类科技应用软件包括数值计算(Number Crunching)型软件和数学分析(Math Analysis)型软件
- 数值计算型软件
它们对大批数据具有较强的管理、计算和可视化能力,运行效率高。代表软件有Matlab,Xmath,Gauss,Mlab等。 - 数学分析型软件
它们以符号计算见长,并可得到解析符号解和任意精度解,但处理大量数据时运行效率低。代表软件有Mathematica,Maple等。
概括来说,Matlab有五大功能:
对于非计算机专业学生来说,在很多时候,需要完成一个任务时,往往会优先选择Matlab,而不是用某一门编程语言来编程序解决,我认为一个重要的原因就在于Matlab的操作界面非常友善,编程的效率更高,易学易用。
下面对Matlab的界面做一个简单的介绍。
如果需要完成比较复杂的任务,也可以在所在的工作文件夹下,右键,新建,脚本,建立.m文件,相当于C语言里面的.c和.cpp文件,然后双击.m文件就会在命令行上方弹出编辑器窗口,拉动边界可以调整命令行和编辑器的大小,如果按住窗口上方往外拖,还可以实现编辑器单独窗口。
接下来对工具栏和菜单栏做一个简单的介绍。
- 文件栏主要是对脚本文件的操作
- 变量栏主要是对工作区变量的操作,但一般用得很少,因为如果要查看变量可以直接在工作区双击即可查看
- 环境部分要注意预设和设置路径两个按钮,预设就相当于是设置,可以调节界面,字体,显示语言等;设置路径是在添加第三方工具包的时候需要用到,可以理解为添加插件
这个工具栏是针对编辑器的,也就是打开编辑器就会自动弹出。这个界面主要是对代码的各种操作
- 注释:快捷键为CTRL+R
- 取消注释:快捷键为CTRL+T
- 运行节:相比于其他的IDE中需要选中某段代码才能实现运行部分代码,Matlab提供了一种高效的方式,即设置分节符 %%(后面记得加个空格),则用光标选中某个节即可运行某一节代码。
- 设置断点:Matlab设置和VSC一样非常方便,只需要在代码左边点击一下出现红点即可
- 清除断点:点击断点下的那个三角形,就可以选择清除所有断点。
二、入门操作
2.1 命令窗口(Command Window)
2.1.1 基本介绍
新手入门时最先接触的一定是命令窗口,它最大的特点就是所见即所得,也就是在命令行中随意输入一个命令,按下回车键,即可得到其运算结果,速度非常快,如下所示:
输入“1+1”,再按下回车,即可得到运算结果2,这里ans是answer是缩写,可以认为是系统自带的一个变量,会不断更新。
需要注意的是,随着命令行的输入,在右侧工作区(参考简介中的界面图)会自动添加运算过程中出现的变量,比如此时右边就出现了一个ans的变量,并显示值为2.
注意:这些变量如果不清理会一直存在,且其值也一直保持不变,除非在命令行中对变量进行重新赋值。另外,如果变量是一个矩阵,则不会显示具体的值,而是会显示矩阵的大小。
命令行回车即显示结果,那可不可以不显示呢?当然可以,只要在最后加上一个英文的分号即可。
2.1.2 基础指令
再介绍一些使用频率较高的基础指令:
- demo :输入demo直接回车可以弹出安装在本地的帮助文档,当然,也可以用浏览器访问在线的帮助文档——Matlab在线帮助文档,善用搜索功能!
- help :查找具体函数或算法的利器!等同于命令doc,使用方法就是help加上需要查找的内容。类似命令:helpwin (简化版的help)和helpdesk(单独使用,定位到帮助文档首页)
- clc :清除命令窗口的内容(类似于串口终端的清屏功能)
- clear :清理右边工作区的变量(慎用!注意与clc区分!)
- format :设置数据的格式,如下图所示:
另外还有format rat
表示运算结果用分数表示。 - ver :单独使用,查看MatLab和Windows版本。
- who :显示当前所有变量的名字
- whos :显示当前所有变量的详细信息。
- pack :整理工作间的内存
- load :从文件中导入工作区(一般是mat后缀的文件)
- save :把工作区的所有变量存入文件中,一般都保存为mat后缀的文件
- what :显示指定的Matlab文件。
- lookfor :在help中搜索关键字(排序原则是将包含搜索内容的按数字母排序)
- which :定位函数或文件
- path :获取或设置搜索路径
- echo :命令回显
- cd :改变当前的工作目录
- pwd :显示当前的工作目录(这个普适性很强)
- dir :显示目录内容
- unix :执行unix命令
- dos :执行dos命令
- !:执行操作系统命令
- computer :显示计算机类型。
2.1.3 常用操作
a. 手动更改变量
如果不想通过命令修改,也可以双击变量,会自动弹出一个类似于Excel的变量界面,可以查看或修改变量。
b. 前后指令复用
当你想在命令行中反复运算一个非常复杂的表达式时,如果不想每次都重新输入一遍怎么办?可以选择复制粘贴,但MatLab提供了一个更好用的方法,那就是通过上下键选择之前输入过的指令,这也是非常常用的功能。
c. 终止当前运算
当你不小心写了一个死循环或者运行了一个庞大的数据文件发现 左下角状态栏 一直显示正忙,想要终止运行又不想关掉软件,就可以使用进程终止操作,Ctrl + C ;另外,如果想关掉Matlab。可以在命令行中输入 Exit 或 Quit ,和点右上角的叉效果相同。
2.2 编辑器窗口(Editor Window)
编辑器窗口是用来创建.m脚本文件的,和命令行窗口的区别就像是VS Code的文本编辑和终端输入。调出的方法就是在菜单栏中点击新建即会自动弹出一个编辑器窗口:
如果选择保存,会默认保存在左侧的当前文件夹中,类似于一个工作区。
但是需要注意的是,MATLAB的脚本文件的命名也有讲究:
-
文件名命名要用英文字符,首字符不能是数字或下划线;
-
文件名不能与matlab的内部函数名相同。 m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误;
-
文件存储路径最好为英文路径。如果用带有中文的路径,某些情况下会出问题。
-
m文件名中不能有空格。若需要用两个或以上单词组合作为文件名,各单词必须直接连接组合(可以把每个单词首字母大写以作区分,或者使用下划线)。如random walk,应该写成RandomWalk或者Random_Walk。
以上参考链接:https://blog.csdn.net/soya_soya/article/details/8778273
2.2.1 脚本语言
那么接下来就是编程的环节了,MATLAB脚本语言非常容易上手,但凡有一点C语言或Python的基础差不多就可以了。为方便有编程基础的快速入门,这里只介绍一些和C语言中不一样的地方吧
-
变量的命名 :只能以字母开头(C语言还可以以下划线开头),且最多不超过19个字符。
-
全局变量
-
循环结构:在MatLab中,循环不使用 { } ,而是用end表示循环的结束(不要求缩进),而且if 或while的条件不需要加 ( ) 。参考下面的例程:
/****for循环****/
for n = 1:10 //表示i从1到10逐次+1,循环十次
x(n) = sin(n*10);
end //终止for循环
/****while循环****/
x = 0;
sum = 0;
while x < 101
sum = sum + x;
x = x + 2;
end
/****if-else语句*****/
if x > 1
f = x^2 + 1;
else if x <= 0
f = x^3;
else
f = 2 * x
end
/*****switch语句******/
num = input('请输入一个数');
switch num
case -1 //注意case后面没有冒号
disp('I am a teacher.');
case 0
disp('I am a student.');
case 1
disp('You are a teacher.');
otherwise //等同于C语言中的 default
disp('You are a student.');
end
- 定义函数 :在MatLab中,写脚本时,不能像C语言一样在该脚本中随便定义一个函数,应该在另一个文件(最好同一目录)中定义。操作方法就是点击新建按钮旁边的三角,选择新建函数。
- 由此可知,定义函数的格式为 function 因变量 = 函数名 (自变量),且需要在最后加上end,(也可以不加)表示函数结束;
- 保存为.m文件时,文件名和定义的函数名fun1必须要一样;
- 如果需要另外定义一个函数,可以直接在该文件中直接定义,但这个函数不能被其他文件调用,只能被该文件名对应的函数调用。
- 调用该函数时,需要严格按照 定义的函数格式来调用,即输入参数和输出参数应该一一对应。
- nargin 和 nargout 的用法:nargin可以理解为n_arg_in,即输入参数的个数,同理,nargout表示输出参数的个数,有了这两个永久变量,可以实现Matlab调用函数时的参数可调性,参考下面这个例子:
- 定义类: 点击新建,选择新建类,得到一个模板:
三、基本运算和函数
3.1 预定义的变量
3.2 符号
a. 运算符号:
这里尤其需要注意带“.”的运算符!!!
一般来说,带“.”的运算符功能和不带“.”的运算符是一样的,但是在矩阵与矩阵之间的运算时有差别,即带“.”的运算符表示矩阵的每一个元素进行运算,而不是一般的矩阵运算(乘法),参考如下例程:
一般来说,但凡涉及到向量或者矩阵的运算,都得要考虑是不是得加点号,因为不加可能会报错或者运算结果完全不对,慎重!
b. 其他符号:
-
% :行注释符,其后这一行的内容为注释,相当于C语言中的 //,如果在脚本中写 %% 并单独成行 ,则表示对代码进行分节,(记得%%后要加空格!)可以使用运行命令中的运行节。
-
%{
和%}
:块注释,相当于C语言中的/**/
,注意,这里的大括号和百分号是错位的和C语言块注释符不太一样。 -
······ :表示续行
3.3 符号变量的声明
在命令行中随便输入一个a = 10,表明a是一个常数变量,而一般在求导和积分时,几乎都是用符号进行运算,因此,一般都需要在程序运行前声明必要的符号变量,语法如下所示:
x=sym(‘x’) —— 表明x是符号变量
syms x y z —— 定义多个符号变量
二者之间的区别可以参考这篇链接
syms f(x) —— 定义两个符号变量,f和x,且二者之间还有函数关系
在声明符号函数时,还可以使用inline函数:
f = inline(“x^3+5*x”) 或者 ff = inline(‘-x*sin(x^2-x-1)’, ‘x’) 如果不带引号,则其内部的变量都应已知。
有时候需要多个函数共用一个变量,就可以将变量定义为全局变量,使用指令
global
,具体用法建议使用help
查看。
使用方法是在每个函数中都要声明global val
,表示这个变量去全局变量中找,如果任何函数改动这个数值,如val = 0;
那么所有函数引用该变量得到的值都会发生改变。
3.4 输入输出函数
说明:如果不加参数 ‘s’,则输入的内容可以参与运算,比如一个矩阵A,rand(3)等,而加上参数 ‘s’之后,输入的内容都会作为字符串返回。
这部分更详细的内容可以参考后续教程:【MATLAB】(二)使用拾遗
3.5 常用数学函数总结
对于这些函数,我认为最重要的是知道MATLAB有这个函数,如果确实需要使用,可以利用help命令来查看详细文档。
3.6 逻辑运算
“等于”和“不等于”
- == :表示等于,一个 = 表示赋值
- ~= :表示不等于,记住,不是感叹号哦!
逻辑运算符:
逻辑关系函数总结
四、绘图
4.1 二维函数图像
4.1.1 已知点集——plot
plot
4.1.2 符号函数——ezplot, fplot
ezplot
fplot
此外,还有fplot函数:
以这个为例,需要学会看Matlab的应用手册,比如第四行之后,函数括号里面都是用 “____” ,其实是代替前面的那些参数,不能省略。
4.1.3 图像处理
需要了解的是,在运行Matlab时跳出的fig窗口其实自带了很多编辑图像属性的功能。只需要点开图像属性
即可对图像标题,坐标轴标签等进行设置。
4.1.4 图像导出
在用MATLAB生成一张图像之后,很多时候的选择都是直接截图,但是,这样存在一个问题,那就是图像周围灰色的边框无法消除,严重影响了图像的美感:
所以,如果图像需要放到论文或者正式的文档中,建议可以按照如下操作:
这样得到的图像就是矢量图,然后直接到Word中粘贴,看到的图像的背景就是纯白的:
其他资料:
- 如何对Matlab的.fig格式图片进行局部放大和修正。
- 如何用MATLAB编辑修改fig文件
4.2 极坐标图 —— polar
polar
但是现在官网更推荐的函数是 polarplot函数:
4.3 三维图形
4.3.1 空间曲线图 —— plot3
plot3
举个例子:
4.3.2 空间曲面
其他绘图可以参考https://ww2.mathworks.cn/products/matlab/plot-gallery.html,以及这个:https://matplotlib.org/stable/gallery/index.html。
4.4 特殊图形
4.4.1 填充类图形
有时候需要画带有填充的柱状图,如下图所示
这个时候就需要用到MATLAB中的fill
指令。在MATLAB中使用help
指令可以得到其简要介绍:
详细内容建议看帮助文档。
后续教程
- 【MATLAB】(二)基本使用拾遗
- 【MATLAB】(三)MATLAB在高等数学中的应用
- 【MATLAB】(四)MATLAB在线性代数中的应用
文章出处登录后可见!