前言
本栏目的文章,文章的主要面向初学者,意在帮助初学者入门。文章主要基于博主的上课内容以及自学历程,总结而成,可能有许多不恰当之处,还请大佬指正!
MATLAB的语法知识相对简单,复杂的点在于灵活运用MATLAB中集成的不同函数,因此纸上谈兵不可取,一定要结合具体内容进行实践!你可以先学习基本语法,然后试着完成文章最后的例子。我也推荐你MATLAB官方的互动学习项目,基本也能达到入门水平【唯一的问题在于,国内的网,经常不能正常访问该网站…】链接如下:
同时,在初期学习的过程中,要养成遇到问题可以自己通过查阅互联网内容进而解决问题的能力。在此,我推荐两个比较权威的网站:
- MATLAB Documentation - MathWorks 中国 相当于用户手册,可以查到对应功能的函数及语法解释
- 首页 - MATLAB中文论坛 (ilovematlab.cn) 中文论坛,可以查到一些常见问题
MATLAB语言特点
MATLAB是“MATrixLABoratory”的简写,即矩阵实验室,是美国MathWorks公司于1984年推出的一种科学计算软件。正如它的名称,MATLAB擅长矩阵运算,被广泛运用于各个领域的数据处理、数据拟真。其具有以下几个特点:
- MATLAB是一种解释性语言
- 变量的多功能性
- 运算符号的多功能性
- 语言规则与笔算式相似
- 强大而简易的作图功能
- 智能化程度高
- 功能丰富,拓展性强
由于篇幅问题,不做具体具体解释。但是随着后续学习的深入,你一定会逐步发现上述特点的具体例子。
MATLAB窗口及常用命令
MATLAB界面
通常情况下,MATLAB的工作环境由命令窗口(Command Window)、当前路径窗口(Current Directory)、工作空间浏览窗口(Workspace)、命令历史窗口(Command History)、启动平台(Launch Pad)、图形窗口(Figure)和文本编辑窗口(Editor)组成。不同版本的MATLAB的界面基本相同,在此,以2018b版本的MATLAB为例对主要的几个窗口进行解释。
-
当前路径窗口(上图紫色区域)
主要显示当前在什么路径下,包括M文件的打开路径等,与自定义函数的调用等有关。
-
工作空间窗口 (上图绿色区域)
工作空间作为一个独立的窗口,可以方便地查看当前程序中的变量,包括元素名、变量的维度、变量所占内存及变量的类型。同时,我们可以直接对工作空间中的变量进行删除、保存、修改等操作。比如使用鼠标双击某个变量,直接进入数组编辑器,对具体的值进行操作。
-
文本编辑窗口 (上图蓝色区域)
该区域是我们最常使用的区域,即代码编辑、运行结果显示。与其他IDE一样,MATLAB也可以创建、编辑和小孩相关文件(.M文件)我们也可以根据自己的喜好,对文本编辑窗口进行个性化设置。主页->环境->预设,感兴趣的同学可以自行进行探索。
-
命令行窗口 (上图橙色区域)
由于MATLAB与Python一样是解释性语言,所以MATLAB也可以一行命令一行命令的输入并执行,即通过命令行窗口输入语句实现对应的功能。当然,主要的编程还是在.M文件中实现,此处我们只介绍基本的操作命令。
MATLAB常用命令
MATLAB中的命令有很多,常用的如下:
-
窗口命令
clf:清除当前图形窗口中的所有非隐藏对象
close:关闭当前图形窗口
close all:关闭所有图形窗口
clc:清除命令窗口的所有内容
-
工作空间管理命令
who:列出工作空间中的所有变量
whos:列出工作空间中的所有变量的详细信息
clear:清除工作空间的所有变量
clear all:清除工作空间的所有变量、函数和MEX文件
save:将工作空间的变量保存到磁盘文件
load:从磁盘空间加载变量到工作空间
-
显示格式设置命令
format type:输出数据格式显示命令
-
调试命令
dbclear:清除断点
dbcont:重新开始运行
dbquit:退出调试模式
-
文件操作命令
what:列出当前目录下MATLAB指定的文件
which:显示函数或文件的位置
-
帮助命令
help:在命令窗口中显示MATLAB 函数或命令的帮助信息
doc:在help浏览器中显示某个函数的联机帮助文档,参数为函数名
MATLAB基本语法
变量
-
生成矩阵
在输入矩阵式,应遵循以下规则:
- 使用方括号
[]
索引矩阵 - 同一行的各元素用空格
,
相隔 - 每一行以分号
;
结尾
这是MATLAB中最最最最常用的变量生成方式,具体实践中很容易就掌握!
- 使用方括号
-
赋值技巧
冒号操作符
:
-
用以表示一个范围
t=j:i:k (以j为初始值,步长为i,直到终值k)
-
代替全行(全列)
a(5,:) 即代表矩阵a的第五行
a(:,2)即代表矩阵a的第二列
-
-
特殊矩阵和数组
-
zeros
生成一个元素全部为0的矩阵或数组
-
ones
生成一个元素全部为1的矩阵或数组
-
eye
生成一个单位阵
-
diag(A)
获取矩阵A的主对角线所有元素,返回一个列向量
-
rand
生成一个元素在(0,1)之间服从均匀分布的矩阵
对生成后的矩阵进行算术运算,就可以得到任意范围的随机数矩阵
-
randn
生成一个元素均值为0,方差为1,矩阵元素服从正态分布的随机数矩阵
-
-
特殊变量和常数
-
pi
常数,表示圆周率值
-
Inf
常数,代表无穷大
-
NaN
表示非数值
-
ans
临时变量,提示当前语句运算的结果
-
基本运算
-
加减
-
矩阵
与线性代数中定义的一样,元素对应相加减 A+B,A-B
-
标量
正常的加减运算 a+b,a-b
-
-
乘
-
矩阵与矩阵
遵循线性代数中矩阵运算规则 A*B
-
标量与标量
正常的乘运算 a*b
-
-
点乘
-
矩阵与矩阵
矩阵的对应元素相乘 A.*B
-
矩阵与标量
每个矩阵元素乘标量 a.*B
-
-
矩阵右除、左除
- B/A=B*inv(A)
- A\C=inv(A)*C
inv(A)函数,实现对矩阵A求逆
-
幂运算
-
矩阵幂 X^p
p为标量时,表示X的p次幂(X可为标量也可为矩阵);p为矩阵时,用特征值和特征向量表示X矩阵的p次幂。
-
矩阵元素幂 A.^B
A与B需为同型矩阵,或其中之一是标量。
-
-
-
矩阵转置
A'
表示对矩阵A进行转置,对于复矩阵,表示复共轭矩阵。
样例实践
1.计算当x=2和x=4时的值
x = [2,4];
y = x(1)^3+((x(1)-0.98)^2)/((x(1)+1.35)^3)-5*(x(1)+1/x(1))
y = x(2)^3+((x(2)-0.98)^2)/((x(2)+1.35)^3)-5*(x(2)+1/x(2))
-
计算
cosd(60) - (9-sqrt(2))^(1/3)
cosd()括号里是角度值,cos()里是弧度值
-
已知求C
a=3; A=4; b=a^2; B=b^2-1; c=a+A-2*B; C=a+2*B+c
-
设
求A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; try C=A*B; catch C=A.*B; lasterr end C D=A.*B
try…catch…语句类似if…else… 当有语句不确定结果时,可以使用
lasteer类似C语言中的perror()函数,会显示程序错误的原因
-
计算福彩双色球一等奖的中奖概率问题。福彩双色球玩法如下:从编号1~33的红球里任选6个,另外在编号1~16的蓝球里再任选1个。如果选择的红球和蓝球与当期的开奖结果一致(顺序可以不同),则中一等奖的概率为多少?
p = 1/nchoosek(33,6)/nchoosek(16,1)
nchoosek()函数实现组合数的运算