MATALB作为工科生几乎都会用到的科学计算软件,大部分大学应该都会购买其版权,因此安装这个软件的人不在少数,即使它占用了15G+的存储空间。但是我发现其实很多人都不会用这个软件,因为安装的时候就是抱着 “我之后可能会用到,先装以备后用” 的心态安装MATLAB,而我当时就是这样的心态。
这两年,前前后后也接触了不少MATLAB的教程,也遇到过很多需要使用的场景,但是发现一个很严重的问题,那就是一段时间不用,之前记住的命令又忘了,于是趁着这个学期学了数学实验课,加上之前学习的一些课程,想简单地以课程为主线总结一下MATLAB的使用,以作备忘。同时穿插一些课程的知识,就当作再次复习一遍了。
数学类科技应用软件包括数值计算(Number Crunching)型软件和数学分析(Math Analysis)型软件
概括来说,Matlab有五大功能:
对于非计算机专业学生来说,在很多时候,需要完成一个任务时,往往会优先选择Matlab,而不是用某一门编程语言来编程序解决,我认为一个重要的原因就在于Matlab的操作界面非常友善,编程的效率更高,易学易用。
下面对Matlab的界面做一个简单的介绍。
如果需要完成比较复杂的任务,也可以在所在的工作文件夹下,右键,新建,脚本,建立.m文件,相当于C语言里面的.c和.cpp文件,然后双击.m文件就会在命令行上方弹出编辑器窗口,拉动边界可以调整命令行和编辑器的大小,如果按住窗口上方往外拖,还可以实现编辑器单独窗口。
接下来对工具栏和菜单栏做一个简单的介绍。
这个工具栏是针对编辑器的,也就是打开编辑器就会自动弹出。这个界面主要是对代码的各种操作
新手入门时最先接触的一定是命令窗口,它最大的特点就是所见即所得,也就是在命令行中随意输入一个命令,按下回车键,即可得到其运算结果,速度非常快,如下所示:
输入“1+1”,再按下回车,即可得到运算结果2,这里ans是answer是缩写,可以认为是系统自带的一个变量,会不断更新。
需要注意的是,随着命令行的输入,在右侧工作区(参考简介中的界面图)会自动添加运算过程中出现的变量,比如此时右边就出现了一个ans的变量,并显示值为2.
注意:这些变量如果不清理会一直存在,且其值也一直保持不变,除非在命令行中对变量进行重新赋值。另外,如果变量是一个矩阵,则不会显示具体的值,而是会显示矩阵的大小。
命令行回车即显示结果,那可不可以不显示呢?当然可以,只要在最后加上一个英文的分号即可。
再介绍一些使用频率较高的基础指令:
format rat
表示运算结果用分数表示。a. 手动更改变量
如果不想通过命令修改,也可以双击变量,会自动弹出一个类似于Excel的变量界面,可以查看或修改变量。
b. 前后指令复用
当你想在命令行中反复运算一个非常复杂的表达式时,如果不想每次都重新输入一遍怎么办?可以选择复制粘贴,但MatLab提供了一个更好用的方法,那就是通过上下键选择之前输入过的指令,这也是非常常用的功能。
c. 终止当前运算
当你不小心写了一个死循环或者运行了一个庞大的数据文件发现 一直显示正忙,想要终止运行又不想关掉软件,就可以使用进程终止操作,Ctrl + C ;另外,如果想关掉Matlab。可以在命令行中输入 Exit 或 Quit ,和点右上角的叉效果相同。
编辑器窗口是用来创建.m脚本文件的,和命令行窗口的区别就像是VS Code的文本编辑和终端输入。调出的方法就是在菜单栏中点击新建即会自动弹出一个编辑器窗口:
如果选择保存,会默认保存在左侧的当前文件夹中,类似于一个工作区。
但是需要注意的是,MATLAB的脚本文件的命名也有讲究:
以上参考链接:https://blog.csdn.net/soya_soya/article/details/8778273
那么接下来就是编程的环节了,MATLAB脚本语言非常容易上手,但凡有一点C语言或Python的基础差不多就可以了。为方便有编程基础的快速入门,这里只介绍一些和C语言中不一样的地方吧
/****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
a. 运算符号:
这里尤其需要注意带“.”的运算符!!!
一般来说,带“.”的运算符功能和不带“.”的运算符是一样的,但是在矩阵与矩阵之间的运算时有差别,即带“.”的运算符表示矩阵的每一个元素进行运算,而不是一般的矩阵运算(乘法),参考如下例程:
一般来说,但凡涉及到向量或者矩阵的运算,都得要考虑是不是得加点号,因为不加可能会报错或者运算结果完全不对,慎重!
b. 其他符号:
在命令行中随便输入一个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;那么所有函数引用该变量得到的值都会发生改变。
说明:如果不加参数 ‘s’,则输入的内容可以参与运算,比如一个矩阵A,rand(3)等,而加上参数 ‘s’之后,输入的内容都会作为字符串返回。
这部分更详细的内容可以参考后续教程:【MATLAB】(二)使用拾遗
对于这些函数,我认为最重要的是知道MATLAB有这个函数,如果确实需要使用,可以利用help命令来查看详细文档。
“等于”和“不等于”
逻辑运算符:
逻辑关系函数总结
plot
ezplotfplot
此外,还有fplot函数:
以这个为例,需要学会看Matlab的应用手册,比如第四行之后,函数括号里面都是用 “____” ,其实是代替前面的那些参数,不能省略。
需要了解的是,在运行Matlab时跳出的fig窗口其实自带了很多编辑图像属性的功能。只需要点开图像属性
即可对图像标题,坐标轴标签等进行设置。
在用MATLAB生成一张图像之后,很多时候的选择都是直接截图,但是,这样存在一个问题,那就是图像周围灰色的边框无法消除,严重影响了图像的美感:
所以,如果图像需要放到论文或者正式的文档中,建议可以按照如下操作:
这样得到的图像就是矢量图,然后直接到Word中粘贴,看到的图像的背景就是纯白的:
其他资料:
polar
但是现在官网更推荐的函数是 polarplot函数:
plot3
举个例子:
其他绘图可以参考https://ww2.mathworks.cn/products/matlab/plot-gallery.html,以及这个:https://matplotlib.org/stable/gallery/index.html。
有时候需要画带有填充的柱状图,如下图所示
这个时候就需要用到MATLAB中的fill
指令。在MATLAB中使用help
指令可以得到其简要介绍:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删