MATLAB常用语句与函数

文章目录


前言

这是一篇讲解了MATLAB常用语句与函数的文章,希望对您有所帮助。


一、MATLAB是什么?

  MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。
  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

二、常用函数

一、MATLAB基础知识

1.MATLAB数据类型

MATLAB数据类型分为:整型、浮点型、复数型、字符型

1.整型
uint8()
#将数值数据转化为无符号8位整数。
int8()
#将数值数据转化为带符号8位整数。
2.浮点型

浮点型数据分为单精度型和双精度型,单精度型实数在内存中占用4个字节,而双精度型实数在内存中占用8个字节,所以双精度型的数据精度更高。

single()
#将其他类型的数据转化为单精度型。
double()
#将其他类型的数据转化为双精度型
3.复数型

复型数据包括实部和虚部两个部分,实部和虚部默认为双精度型,虚数单位用i或j来表示。

real()
#求函数实部。
imag()
#求函数虚部。

complex(x,y)
#生成以x为实部,y为虚部的复数。
4.字符型
char()
#把ASCII码矩阵转换为字符串矩阵。
5.数值数据的输出格式
format 格式符

format short
#默认格式,小数点后保留4位
format long
#有效数字16位
format long e
#有效数字16位加3位指数
format short e
#有效数字5位加3位指数
format bank
#保留两位小数位
format +
#只给出正负
format rational
#以分数的形式表示
format hex
#以16进制数表示
format long g
#15位有效数
format short g
#5位有效数
6.常用数学函数的应用

三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加‘d’,以示区别。

sin(A)
#求角A的正弦函数,A为弧度制。
sind(A)
#求角A的正弦函数,A为角度制。

abs()
#可以求实数的绝对值、复数的模、字符串的ASCII码值。

#用于取整的函数
round()
#按照四舍五入的规则取整。
ceil()
#向上取整,取大于等于这个数的第一个整数。
floor()
#向下取整,取小于等于这个数的第一个整数。
fix()
#固定取靠近0的那个整数,即舍去小数取整。

isprime(n)
#判断n是否为素数,当n为素数时返回1,否则返回0.

2.变量及其操作

预定义变量是由系统本身定义的变量
ans是默认赋值变量
ij代表虚数单位
pi代表圆周率
NaN代表非数

who
#显示MATLAB工作区中已经驻留的变量名清单。
whos
#显示MATLAB工作区中已经驻留的变量名清单、大小、数据类型。

save
#创建内存变量文件。
load
#装载内存变量文件。

3.MATLAB矩阵表示

1.矩阵的建立

1.利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。
2.利用已建好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。
3.可以用实部矩阵或虚部矩阵构成复数矩阵。

2.冒号表达式
e1:e2:e3
#e1为初始值,e2为步长,e3为终止值(省略e2,则步长为1

linspace(a,b,n)
#a为第一个元素,b为最后一个元素,等步长生成n个元素(当n省略时,自动产生100个元素)
3.结构矩阵与单元矩阵

1.结构矩阵格式:
结构矩阵元素.成员名=表达式
2.单元矩阵
建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵元素用大括号括起来。

4.矩阵元素的引用

1.通过下标来引用矩阵元素

A(3,2)表示A矩阵第3行第2列的元素。

2.通过序号来引用

在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素…,一直到矩阵的最后一列元素。
矩阵元素的序号与下标可以利用sub2ind和ind2sub函数实现相互转化。

sub2ind(S,I,J)
#将矩阵中指定元素S的行I、列J下标转换成存储的序号。
[I,J]=ind2sub(S,D)
#将把矩阵元素S的序号D转换成对应的下标。
3.利用冒号表达式获得子矩阵

子矩阵是指由矩阵中的一部分元素构成的矩阵。
A(i,:)
第i行的全部元素
A(:,j)
第j列的全部元素
A(i:i+m,k:k+m)
第ii+m行内且在第kk+m列中的所有元素
A(i:i+m,:)
第i~i+m行的全部元素

end运算符:表示某一维的末尾下标。

4.改变矩阵的形状
reshape(A,m,n)
#在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

5.MATLAB基本运算

1.算术运算
1.基本算术运算

基本算术运算符:


  • / 右除
    \ 左除
    ^ 乘方
    MATLAB的算术运算是在矩阵意义下进行的。
    单个数据的算术运算只是矩阵运算的一种特例。
    在MATLAB中,有两种矩阵除法运算:/ 右除,\ 左除。如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B。对于矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵关系。
2.点运算

两矩阵进行点运算是指他们的对应元素进行相关运算,要求两矩阵同型。
点运算符:
.*
./
.
.^

2.关系运算

当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0.
当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

关系运算符:
< 小于
<= 小于等于

大于
= 大于等于
== 等于
~= 不等于

3.逻辑运算

逻辑运算符:
& 与
| 或
~ 非

a&b:a、b全为非零时,运算结果为1,否则为0.
a|b:a、b中只要有一个为非零时,运算结果为1.
~a:当a为零时,运算结果为1;当a为非零时,运算结果为0.

若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按照标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
若参与逻辑运算的一个是标量、一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。

4.优先级

在算术运算、关系运算和逻辑运算中,算术运算的优先级最高,逻辑运算优先级最低,但逻辑非运算是单目运算,它的优先级比双目运算要高。

6.字符串处理

在MATLAB中,字符串是用单引号括起来的字符序列。
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。

eval(s)
#字符串的执行
1.字符串比较函数
strcmp(s1,s2)
#用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0.
strncmp(s1,s2,n)
#用来比较字符串s1和s2前n个字符是否相等,如果相等,返回结果为1,否则返回0.
strcmpi(s1,s2)
#在忽略字母大小写前提下,用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0.
strncmpi(s1,s2,n)
#在忽略字母大小写前提下,用来比较字符串s1和s2前n个字符是否相等,如果相等,返回结果为1,否则返回0.
2.字符串的查找与替换
findstr(s1,s2)
#返回短字符串在长字符串中的开始位置。
strrep(s1,s2,s3)
#将字符串s1中的所有子字符串s2替换为字符串s3。

二、MATLAB矩阵处理

1.特殊矩阵

1.通用的特殊矩阵
zeros()
#产生全0矩阵,即零矩阵。
ones()
#产生全1矩阵,即幺矩阵。
eye()
#产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
rand()
#产生(0,1)区间均匀分布的随机矩阵。
randn()
#产生均值为0,方差为1的标准正态分布随机矩阵。

调用格式

#以zeros函数为例

zeros(m)
#产生m×m零矩阵。
zeros(m,n)
#产生m×n零矩阵。
zeros(size(A))
#产生与矩阵A同样大小的零矩阵。

特殊情况

rand()
#产生(0,1)开区间均匀分布的随机数x。
fix(a+(b-a+1)*x)
#产生[a,b]区间上均匀分布的随机整数。
randn()
#产生均值为0、方差为1的标准正态分布随机数x。
#μ+σx:得到均值为μ、方差为σ²的随机数。
2.用于专门学科的特殊矩阵
1.魔方矩阵

n阶魔方阵由1,2,3,…,n²共n²个整数组成,且每行、每列以及主、副对角线上各n个元素之和都相等。
n阶魔方阵每行每列元素的和为(1+2+3+…+n²)/n=(n+n³)/2

magic(n)
#产生一个特定的魔方阵。
2.范德蒙矩阵

对于向量v=[v1,v2,…,vn],范德蒙矩阵的一般形式为:
在这里插入图片描述

vander(V)
#产生一个以向量V为基础的范德蒙矩阵。
3.希尔伯特矩阵

n阶希尔伯特矩阵的一般形式为:
在这里插入图片描述

hilb(n)
#产生一个n阶希尔伯特矩阵。
4.伴随矩阵

设多项式p(x),则多项式的伴随矩阵是:
在这里插入图片描述
p(x)称为A的特征多项式,方程p(x)=0的根称为A的特征值。

compan(p)
#产生一个伴随矩阵,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后。
5.帕斯卡矩阵

根据二项式定理,(x+y)^n展开后的系数随着n的增大组成一个三角形表,这个三角形称为杨辉三角形。
把二项式系数依次填写在矩阵的左侧对角线上,然后提取左侧的n行n列元素即为n阶帕斯卡矩阵。
帕斯卡矩阵的第一行元素和第一列元素都为1,其余位置的元素是该元素的左边元素与上面元素相加。

pascal(n)
#产生一个n阶帕斯卡矩阵。

2.矩阵变换

1.对角矩阵

提取矩阵的对角线元素(此时函数参数为矩阵)

diag(A)
#提取矩阵A主对角线的元素,生成一个列向量.
diag(A,K)
#提取矩阵A第K条对角线的元素,生成一个列向量.

在这里插入图片描述
构造对角矩阵(此时函数参数为向量)

diag(V)
#以向量V为主对角线元素,产生对角矩阵。
diag(V,K)
#以向量V为第K条对角线元素,产生对角矩阵。
2.三角阵

上三角矩阵

triu(A)
#提取矩阵A的主对角线及以上的元素。
triu(A,K)
#提取矩阵A的第K条对角线及以上的元素。

下三角矩阵

tril(A)
#提取矩阵A的主对角线及以下的元素。
tril(A,K)
#提取矩阵A的第K条对角线及以下的元素。
3.矩阵的转置

转置运算符是小数点后面接单引号(.’)
共轭转置,其运算符是单引号(’),它在转置的基础上还要取每个数的复共轭。

4.矩阵的旋转
rot90(A,K)
#将矩阵A逆时针方向旋转90°的K倍,当K为1时可省略。
5.矩阵的翻转
fliplr(A)
#对矩阵A实施左右翻转。
flipud(A)
#对矩阵A实施上下翻转。
6.矩阵的求逆

对于一个方阵A,如果存在一个与其同阶的方阵B,使得AB=BA=l(l为单位矩阵),则称B为A的逆矩阵,当然,A也是B的逆矩阵。

inv(A)
#求方阵A的逆矩阵。

3.矩阵求值

1.矩阵的行列式值

把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就成为方阵所对应的行列式的值。

det(A)
#求方阵A所对应的行列式的值。
2.矩阵的秩

矩阵线性无关的行数或列数成为矩阵的秩。

rank(A)
#求矩阵A的秩。
3.矩阵的迹

矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。

trace(A)
#求矩阵A的迹。
4.矩阵的范数

矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。
1.向量的常用范数
向量1-范数:向量元素的绝对值之和。
向量2-范数:向量元素平方和的平方根。
向量∞-范数:所有向量元素绝对值中的最大值。

norm(V)
norm(V,2)
#计算向量V的2-范数。

norm(V,1)
#计算向量V的1-范数。

norm(V,inf)
#计算向量V的∞-范数。

2.矩阵的范数
矩阵A的1-范数:矩阵列元素绝对值之和的最大值。
矩阵A的2-范数:A’A矩阵的最大特征值的平方根。
矩阵A的∞-范数:所有矩阵行元素绝对值之和的最大值。

norm(A)
norm(A,2)
#计算矩阵A的2-范数。

norm(A,1)
#计算矩阵A的1-范数。

norm(A,inf)
#计算矩阵A的∞-范数。
5.矩阵的条件数

矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。
条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。

cond(A)
cond(A,2)
#计算A的2-范数下的条件数。

cond(A,1)
#计算A的1-范数下的条件数。

cond(A,inf)
#计算A的∞-范数下的条件数。

4.矩阵的特征值与特征向量

矩阵特征值的数学定义:设A是n阶方阵,如果存在常数λ和n维非零列向量x,使得等式Ax=λx成立,则称λ为A的特征值,x是对应特征值λ的特征向量。

E=eig(A)
#求矩阵A的全部特征值,构成向量E。

[X,D]=eig(A)
#求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量 。

5.稀疏矩阵

1.矩阵的存储方式

完全存储方式
稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和列号。

2.稀疏矩阵的存储方式的产生
1.完全存储方式与稀疏存储方式之间的转化
A=sparse(S)
#将矩阵S转化为稀疏存储方式的矩阵A。
S=full(A)
#将矩阵A转化为完全存储方式的矩阵S。
2.直接建立稀疏存储矩阵
A=sparse(m,n)
#生成一个m×n的所有元素都是零的稀疏矩阵。
A=sparse(u,v,S)
#其中u、v、S是三个等长的向量。S是要建立的系数存储矩阵的非零元素,u(i)v(i)分别是S(i)的行和列下标。

B=spconvert(A)
#A为一个m×3或m×4的矩阵,其每行表示一个非零元素,m是非零元素的个数。
#A(i,1)表示第i个非零元素所在的行。
#A(i,2)表示第i个非零元素所在的列。
#A(i,3)表示第i个非零元素值的实部。
#A(i,4)表示第i个非零元素值的虚部。
#若矩阵的全部元素都是实数,则无需第4列。
3.带状稀疏矩阵的稀疏存储

稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则结构的稀疏矩阵。
带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。

[B,d]=spdiags(A)
#从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d。
A=spdiags(B,d,m,n)
#产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。
4.单位矩阵的稀疏存储
speye(m,n)
#返回一个m×n的稀疏存储单位矩阵。

三、MATLAB程序流程控制

1.顺序结构

1.数据的输入
A=input(提示信息,选项)
2.数据的输出
disp(输出项)
3.程序的暂停
pause(延迟秒数)
#若强行终止程序的运行可使用Ctrl+C命令。

2.选择结构

1.用if语句实现选择结构

当条件结果为标量时,非零表示条件成立,零表示条件不成立
当条件结果为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立。
单分支if语句

if 条件
	语句组1
end

双分支if语句

if 条件
	语句组1
else
	语句组2
end

多分支if语句
在多分支if语句中不管有几个分支,程序执行完一个分支后,其余分支将不会再执行,这时整个if语句结束。

if 条件1
	语句组1
elseif 条件2
	语句组2
elseif 条件3
	语句组3
	...
elseif 条件m
	语句组m
else
	语句组n
end
2.用switch语句实现选择结构

switch表达式应该是一个其值可以列举的表达式
case结果表为switch表达式的取值,当取值有多个时,用单元数据表示。

switch 表达式
	case 结果表1
		语句组1
	case 结果表2
		语句组2
	case 结果表3
		语句组3
	...
	case 结果表m
		语句组m
	otherwise
		语句组n
end

3.循环结构

循环结构又称为重复结构,是利用计算机运算速度快以及能进行逻辑控制的特点来重复执行某些操作。

1.用for语句实现循环结构

for语句针对向量的每一个元素执行一次循环体。
退出循环之后,循环变量的值就是向量中最后的元素值。
当向量为空时,循环体一次也不执行。

for 循环变量=表达式1:表达式2:表达式3
	循环体语句
end

表达式1为初值,表达式2为步长,表达式3为终值(当步长为1时,表达式2可省略)

按照MATLAB的定义,for语句的循环变量也可以是一个列向量,其格式为:

for 循环变量=矩阵表达式
	循环体语句
end
2.用while语句实现循环结构

while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,使用for语句更方便。
针对不同情况可以选择不同的循环语句,但从功能上讲两种循环语句可以相互替代。

while 条件
	循环体语句
end

break语句和continue语句
break语句用来跳出循环体,结束整个循环。
continue语句用来结束本次循环,接着进行下一次是否执行循环的判断。

循环的嵌套
如果一个循环结构的循环体又包含一个循环结构,就称为循环的嵌套,或称为多重循环结构。

4.函数文件的定义与调用

1.函数文件定义
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句

当有多个形参时,形参之间用逗号分隔,组成形参表。当输出形参多于一个时,应该用方括号括起来,构成一个输出矩阵。
函数文件名通常由函数名再加上扩展名.m组成,函数文件名与函数名也可以不相同。
return语句表示结束函数的执行。

2.函数文件调用
输出实参表=函数名(输入实参表)

在调用函数时,函数输入输出参数称为实际参数,简称实参。

3.匿名函数

基本格式:

函数句柄变量=@(匿名函数输入参数)匿名函数表达式

函数句柄变量=@内部函数或自定义函数名

5.函数参数与变量的作用域

nargin输入实参的个数
nargout输出实参的个数

局部变量是指在程序中只在特定过程或函数中可以访问的变量。
全局变量的作用域是整个MATLAB工作空间,也就是全程有效,所有的函数都可以对它进行存取和修改。
全局变量定义格式:

global 变量名

四、MATLAB绘图

1.二维曲线

1.plot函数的基本用法
plot(x,y)
#x和y分别用于存储x坐标和y坐标数据。

plot函数的参数x是复数向量时,则分别以该向量元素实部和虚部为横、纵坐标绘制出一条曲线。
当x是向量,y是矩阵时,如果矩阵y的列数等于x的长度,则以向量x为横坐标,以y的每个行向量为纵坐标绘制曲线,曲线的条数等于y的行数。
当x是向量,y是矩阵时,如果矩阵y的行数等于x的长度,则以向量x为横坐标,以y的每个列向量为纵坐标绘制曲线,曲线的条数等于y的列数。
当x、y是同型矩阵时,以x、y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

plot(x1,y1,x2,y2...xn,yn)
#含多个输入参数的plot函数

其中,每一向量对构成一组数据点的横纵坐标,绘制一条曲线。
含选项的plot函数

plot(x,y,选项)
#线型
'-'  实线
':'  虚线
'-.' 点画线
'--' 双画线
#颜色
'r'  红色
'g'  绿色
'b'  蓝色
'w'  白色
'k'  黑色
#数据点标记
'*'  星号
'o'  圆圈
's'  方块
'p'  五角星
'^'  朝上三角符号
2.fplot函数的基本用法
fplot(f,lims,选项)

其中,f代表一个函数,通常采用函数句柄的形式。lims为x轴的取值范围,用二元向量[xmin,xmax]描述,默认值为[-5,5].选项定义与plot函数相同。
双输入函数参数的用法

fplot(funx,funy,tlims,选项)

其中,funx,funy代表函数,通常采用函数句柄的形式。tlims为参数函数funx和funy的自变量的取值范围,用二元向量[tmin,tmax]描述。

2.绘制图形的辅助操作

1.给图形添加标注

title函数

title(图形标题)
#在图形标题可以使用ASCII码或LaTeX格式控制符。

title(图形标题,属性名,属性值)
#含属性设置的title
Color属性:用于设置图形标题文本的颜色。
FontSize属性:用于设置标题文字的字号。

xlabel函数和ylabel函数

xlabel(x轴说明)
ylabel(y轴说明)

text函数和gtext函数

text(x,y,图形说明)
gtext(图形说明)

legend函数

legend(图例1,图例2,...)
2.坐标控制

axis函数

axis([xmin,xmax,ymin,ymax,zmin,zmax]) 

axis equal
#纵、横坐标轴采用等长刻度。
axis square
#产生正方形坐标系(默认为矩形)
axis auto
#使用默认设置
axis off
#取消坐标轴
axis on
#显示坐标轴

给坐标系加网格和边框

grid on
grid off
grid

box on
box off
box
3.图形保持
hold on
hold off
hold
4.图形窗口的分割

子图:同一图形窗口中的不同坐标系下的图形称为子图。
subplot函数

subplot(m,n,p)
#m和n指定将图形窗口分成m×n个绘图区,p指定当前活动区。

3.其他形式的二维曲线

1.其他坐标下的二维曲线图

对数坐标图

semilogx(x1,y1,选项1,x2,y2,选项2...)
semilogy(x1,y1,选项1,x2,y2,选项2...)
loglog(x1,y1,选项1,x2,y2,选项2...)

极坐标图

polar(theta,rho,选项)
#theta为极角,rho为极径,选项的内容与plot函数相同。
2.统计图
1.条形类图形

条形图

bar(y,style)
#参数y是数据,选项style用于指定分组排列模式(`grouped` 簇状分组,`stacked` 堆积分组)。
bar(x,y,style)
#x存储横坐标,y存储数据。
barh()
#与bar()类似。

直方图

hist(y)
hist(y,x)
#参数y是要统计的数据,x用于指定区间的划分方式。

rose(theta,x)
#参数theta用于确定每一区间与原点的角度,选项x用于指定区间的划分方式。
2.面积类图形

扇形图

pie(x,explode)
参数x存储待统计数据,选项explode控制图块的显示模式。

面积图

area()
#与plot函数用法类似。
3.散点类图形

散点图

scatter(x,y,选项,'filled')
#参数x、y用于定位数据点,选项用于指定线型、颜色、数据点标记。

阶梯图

stairs()

杆图

stem()

三个函数用法相似以scatter函数为例说明。

2.矢量类图形

罗盘图

compass(x,y,u,v)
#(x,y)指定矢量起点,(u,v)指定矢量终点。

羽毛图

feather()

箭头图

quiver()

三个函数用法相似以compass函数为例说明。

4.三维曲线

1.plot3函数的基本用法
plot3(x,y,z)
#参数x、y、z组成一组曲线的坐标。 
plot3(x1,y1,z1,x2,y2,z2,...,xn,yn,zn)
#每一组x、y、z向量构成一组数据点的坐标、绘制一条曲线。
plot3(x,y,z,选项)
#选项用于指定曲线的线型、颜色和数据点标记。
2.fplot3函数的基本用法
fplot3(funx,funy,funz,tlims)
#funx、funy、funz代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。tlims为参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认为[-55].
fplot3(x,y,z,选项)
#选项用于指定曲线的线型、颜色和数据点标记。

5.三维曲面

1.平面网格数据的生成

利用meshgrid函数生成

[X,Y]=meshgrid(x,y)
#参数x、y为向量,存储网格点坐标的X、Y为矩阵。
2.绘制三维曲面的mesh函数和surf函数
mesh(x,y,z,c)
#用于绘制三维网格图,其中x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。
surf(x,y,z,c)
#用于绘制三维曲面图,其中x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。

mesh(z,c)
#当x、y省略时,z矩阵的第2维下标当作x轴坐标,z矩阵的第1维下标当作y轴坐标。
surf(z,c)
#当x、y省略时,z矩阵的第2维下标当作x轴坐标,z矩阵的第1维下标当作y轴坐标。

meshc()
#带等高线的三维网格曲面函数,用法与mesh函数相同。
meshz()
#带底座的三维网格曲面函数,用法与mesh函数相同。
surfc()
#具有等高线的曲面函数,用法与surf函数相同。
surfl()
#具有光照效果 的曲面函数,用法与surf函数相同。
3.标准三维曲面

sphere函数

[x,y,z]=sphere(n)
#绘制三维球面。

cylinder函数

[x,y,z]=cylinder(R,n)
#绘制三维柱面。

peaks函数的调用格式

peaks(n)
peaks(V)
peaks(x,y)
peaks
4.fmesh函数和fsurf函数
fsurf(funx,funy,funz,uvlims)
fmesh(funx,funy,funz,uvlims)
#其中funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx、funy和funz的自变量的取值范围,用四元向量[umin,umax,vmin,vmax]描述,默认为[-5,5,-5,5]

6.图形修饰处理

1.视点处理

view函数的基本用法

view(az,el)
#az为方位角(默认为-37.5°),el为仰角(默认为35°)
view(x,y,z)
#x、y、z为仰角在笛卡尔坐标系的位置。
view(2)
#设置从二维平面观察图形,方位角为0°,仰角为90°。
view(3)
#设置从三维平面观察图形,方位角为-37.5°,仰角为35°。
2.色彩处理

颜色向量的表示
[R G B]
红 绿 蓝
[0 0 1]:蓝色
[1 0 0]:红色
[0 1 0]:绿色
[1 1 1]:白色
[0 0 0]:黑色
指定当前图形使用的色图
在这里插入图片描述

colormap cmapname
colormap(cmap)

三维图形表面的着色

shading faceted
#将每个网格片与其高度对应的颜色进行着色,网格线是黑色。
shading flat
#将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色。
shading interp
#在网格片内采用颜色插值处理。
3.裁剪处理

将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。

五、数据分析与多项式计算

1.数据统计分析

1.求最大元素与最小元素

当参数为向量时,函数有两种调用格式:

y=max(X)
#返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。
[y.k]=max(X)
#返回向量X的最大值存入y,最大值元素的序号存入k,如果X中包含复数元素,则按模取最大值。

y=min(X)
#返回向量X的最小值存入y,如果X中包含复数元素,则按模取最小值。
[y.k]=min(X)
#返回向量X的最小值存入y,最小值元素的序号存入k,如果X中包含复数元素,则按模取最小值。

当参数为矩阵时,函数有三种调用格式:

Y=max(A)
#返回一个行向量存入Y,向量的第i个元素是矩阵A的第i列上的最大值。
[Y.U]=max(A)
#返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值元素的行号。
max(A,[],dim)
#dim12.dim取1时,该函数的功能和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。

Y=min(A)
#返回一个行向量存入Y,向量的第i个元素是矩阵A的第i列上的最小值。
[Y.U]=min(A)
#返回行向量Y和U,Y向量记录A的每列的最小值,U向量记录每列最小值元素的行号。
min(A,[],dim)
#dim12.dim取1时,该函数的功能和min(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最小值。
2.求平均值与中值

平均值:指算术平均值,即每项数据之和除以项数。
中值:指在数据序列中其值的大小恰好处在中间的元素。如果数据个数为奇
数,则取值为大小位于中间的元素;如果数据个数为偶数,则取中间两个元
素的平均值。

mean()
#求算术平均值。
median()
#求中值。
3.求和与求积
sum()
#求和函数。
prod()
#求积函数。
4.累加和与累乘积

设U=(u1,u2,u3,…,un)是一个向量,V、W是与U等长的另外两个向量,并且
在这里插入图片描述
则分别称V、W为U的累加和向量和累乘积向量。

cumsum()
#累加和函数。
cumprod()
#累乘积函数。
5.求标准差与相关函数

标准差用于计算数据偏离平均数的距离的平均值,其计算公式为
在这里插入图片描述

在这里插入图片描述
MATLAB中计算标准差的函数为std()

std(X)
#计算向量X的标准差。

std(A)
#计算矩阵A的各列的标准差。

std(A,flag,dim)
#flag01,当flag=0时,按S1所列公式计算样本标准方差;当flag=1时,按S2所列公式计算总体标准方差。在默认情况下,flag=0,dim=1

相关系数能够反映两组数据序列之间相互关系,其计算公式为
在这里插入图片描述
在MATLAB中,计算相关系数的函数为corrcoef()

corrcoef(A)
 #返回由矩阵A所形成的一个相关系数矩阵,其中,第i行第j
列的元素表示原矩阵A中第i列和第j列的相关系数。

corrcoef(X,Y)
#在这里,X,Y是向量,它们与corrcoef([X,Y])的作用一
样,用于求X、Y向量之间的相关系数。
6.排序

在MATLAB中,排序函数为sort()

sort(X)
#对向量X按升序排列。

[Y,I]=sort(A,dim,mode)
#其中dim指明对A的列还是行进行排序。mode指明按升序还是降序排序,若取“ascend”,则按升序;若取“descend”,则按降序,默认为升序。输出参数中,Y是排序后的矩阵,而I记录Y中的元素在A中位置。

2.多项式计算

1.多项式的表示

在MATLAB中,n次多项式用一个长度为n+1的行向量表示。如有n次多项式:
在这里插入图片描述
则在MATLAB中,p(x)表示为向量形式:
在这里插入图片描述
在MATLAB中创建多项式向量时,要注意三点:
(1)多项式系数向量的顺序是从高到低。
(2)多项式系数向量包含0次项系数,所以其长度为多项式最高次数
加1。
(3)如果有的项没有,系数向量相应位置应用0补足。

2.多项式的四则运算

(1)多项式的加减运算
多项式的加减运算非常简单,即相应向量相加减。
(2)多项式乘法

conv(P1,P2)
#多项式相乘,其中,P1、P2是两个多项式系数向量。

(3)多项式除法

[Q,r]=deconv(P1,P2
#多项式相除,其中Q返回多项式P1除以P2的商式,r返回P1除以P2的余式。这里,Q和r仍是多项式系数向量。

deconv是conv的逆函数,因此P1=conv(Q,P2)+r成立。

3.多项式的求导

在MATLAB中,多项式求导函数为polyder(),其调用格式为:

p=polyder(P)
#求多项式P的导函数。
p=polyder(P,Q)
#求P×Q的导函数。
[p,q]=polyder(P,Q)
#求P/Q的导函数,导函数的分子存入p,分母存入q。
4.多项式的求值
polyval(p,x)
#代数多项式求值,其中,p为多项式系数向量,x可以是标量、向量或矩阵。若x为标量,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式的值。
polyvalm(p,x)
#矩阵多项式求值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,以方阵为自变量求多项式的值。
5.多项式的求根

在MATLAB中,多项式求根函数为

roots(p)
#其中p为多项式的系数向量。

若已知多项式的全部根,则可以用poly函数建立起该多
项式,其调用格式为:

p=poly(x)

3.数据插值

1.数据插值的实现方法

在MATLAB中,一维插值函数为interp1(),其调用格式为:

Y1=interp1(X,Y,X1,method)
#该语句将根据X、Y的值,计算函数在X1处的值。其中,X、Y是两个等长的已知向量,分别表示采样点和采样值。X1是一个向量或标量,表示要插值的点。
method参数用于指定插值方法,常用的取值有以下四种:
(1)linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
(2)nearest:最近点插值。选择最近样本点的值作为插值数据。
(3)pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
(4)spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。
2.四种方法的比较

线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关。n越大,误差越小。
3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性;而3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。
MATLAB中的二维插值函数为interp2(),其调用格式为:

Z1=interp2(X,Y,Z,X1,Y1,method)
#其中,X、Y是两个向量,表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。

3.曲线拟合

与数据插值类似,曲线拟合也是一种函数逼近的方法。构造函数g(x)去逼近未知函数f(x),使得误差g(xi)-f(xi)(i=1,2,3,…,n)在某种意义下达到最小。
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和来寻找数据的最佳函数匹配。
设p(x)是一个多项式函数
在这里插入图片描述
的值最小,则p(x)为原函数y=f(x)的逼近函数。
多项式拟合函数polyfit()的用法

polyfit()
#求得最小二乘拟合多项式系数。

P=polyfit(X,Y,m)
[P,S]=polyfit(X,Y,m)
[P,S,mu]=polyfit(X,Y,m)
根据样本数据X和Y,产生一个m次多项式P及其在采样点误差数据S,mu是一个二元向量,mu(1)mean(X),而mu(2)std(X)
  • 11
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值