当前位置:   article > 正文

【MATLAB】(一)基本使用入门

matlab

前言

  MATALB作为工科生几乎都会用到的科学计算软件,大部分大学应该都会购买其版权,因此安装这个软件的人不在少数,即使它占用了15G+的存储空间。但是我发现其实很多人都不会用这个软件,因为安装的时候就是抱着  “我之后可能会用到,先装以备后用” 的心态安装MATLAB,而我当时就是这样的心态。
  这两年,前前后后也接触了不少MATLAB的教程,也遇到过很多需要使用的场景,但是发现一个很严重的问题,那就是一段时间不用,之前记住的命令又忘了,于是趁着这个学期学了数学实验课,加上之前学习的一些课程,想简单地以课程为主线总结一下MATLAB的使用,以作备忘。同时穿插一些课程的知识,就当作再次复习一遍了。
  之后如果接触了其他需要使用Matlab的课程,也会继续更新。
  其他资料可以参考MATLAB中文论坛

声明

  本博客大部分内容来自课程《数学实验》,(少部分来自其他教程)因此本博客不作任何商用,感兴趣的同学欢迎加入MOOC的学习,这是课程链接


一、MATLAB简介(基本来自课程内容)

  数学类科技应用软件包括数值计算(Number Crunching)型软件数学分析(Math Analysis)型软件

  1. 数值计算型软件
      它们对大批数据具有较强的管理、计算和可视化能力,运行效率高。代表软件有Matlab,Xmath,Gauss,Mlab等。
  2. 数学分析型软件
      它们以符号计算见长,并可得到解析符号解和任意精度解,但处理大量数据时运行效率低。代表软件有Mathematica,Maple等。

  概括来说,Matlab有五大功能:
在这里插入图片描述
  对于非计算机专业学生来说,在很多时候,需要完成一个任务时,往往会优先选择Matlab,而不是用某一门编程语言来编程序解决,我认为一个重要的原因就在于Matlab的操作界面非常友善,编程的效率更高,易学易用

  下面对Matlab的界面做一个简单的介绍。

界面简介
  如果需要完成比较复杂的任务,也可以在所在的工作文件夹下,右键,新建,脚本,建立.m文件,相当于C语言里面的.c和.cpp文件,然后双击.m文件就会在命令行上方弹出编辑器窗口,拉动边界可以调整命令行和编辑器的大小,如果按住窗口上方往外拖,还可以实现编辑器单独窗口。

  接下来对工具栏和菜单栏做一个简单的介绍。

工具栏

  1. 文件栏主要是对脚本文件的操作
  2. 变量栏主要是对工作区变量的操作,但一般用得很少,因为如果要查看变量可以直接在工作区双击即可查看
  3. 环境部分要注意预设设置路径两个按钮,预设就相当于是设置,可以调节界面,字体,显示语言等;设置路径是在添加第三方工具包的时候需要用到,可以理解为添加插件

在这里插入图片描述
  这个工具栏是针对编辑器的,也就是打开编辑器就会自动弹出。这个界面主要是对代码的各种操作

  1. 注释:快捷键为CTRL+R
  2. 取消注释:快捷键为CTRL+T
  3. 运行节:相比于其他的IDE中需要选中某段代码才能实现运行部分代码,Matlab提供了一种高效的方式,即设置分节符 %%(后面记得加个空格),则用光标选中某个节即可运行某一节代码。
  4. 设置断点:Matlab设置和VSC一样非常方便,只需要在代码左边点击一下出现红点即可
  5. 清除断点:点击断点下的那个三角形,就可以选择清除所有断点。

二、入门操作

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。可以在命令行中输入 ExitQuit ,和点右上角的叉效果相同。

2.2 编辑器窗口(Editor Window)

  编辑器窗口是用来创建.m脚本文件的,和命令行窗口的区别就像是VS Code的文本编辑和终端输入。调出的方法就是在菜单栏中点击新建即会自动弹出一个编辑器窗口:
在这里插入图片描述
  如果选择保存,会默认保存在左侧的当前文件夹中,类似于一个工作区。
  但是需要注意的是,MATLAB的脚本文件的命名也有讲究:

  1. 文件名命名要用英文字符,首字符不能是数字或下划线;

  2. 文件名不能与matlab的内部函数名相同。 m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误;

  3. 文件存储路径最好为英文路径。如果用带有中文的路径,某些情况下会出问题。

  4. 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表示循环的结束(不要求缩进),而且ifwhile的条件不需要加 ( ) 。参考下面的例程:

/****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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 定义函数 :在MatLab中,写脚本时,不能像C语言一样在该脚本中随便定义一个函数,应该在另一个文件(最好同一目录)中定义。操作方法就是点击新建按钮旁边的三角,选择新建函数
    在这里插入图片描述
    在这里插入图片描述
  1. 由此可知,定义函数的格式为 function 因变量 = 函数名 (自变量),且需要在最后加上end,(也可以不加)表示函数结束;
  2. 保存为.m文件时,文件名和定义的函数名fun1必须要一样;
  3. 如果需要另外定义一个函数,可以直接在该文件中直接定义,但这个函数不能被其他文件调用,只能被该文件名对应的函数调用。
  4. 调用该函数时,需要严格按照 定义的函数格式来调用,即输入参数和输出参数应该一一对应。
  5. narginnargout 的用法: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中粘贴,看到的图像的背景就是纯白的:
在这里插入图片描述

  其他资料:

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指令可以得到其简要介绍:
在这里插入图片描述
详细内容建议看帮助文档。

后续教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/179009?site
推荐阅读
相关标签
  

闽ICP备14008679号