MATLAB函数数组.docx
- 文档编号:25488996
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:10
- 大小:25.58KB
MATLAB函数数组.docx
《MATLAB函数数组.docx》由会员分享,可在线阅读,更多相关《MATLAB函数数组.docx(10页珍藏版)》请在冰豆网上搜索。
MATLAB函数数组
MATLAB函数、数组、矩阵
1.基本运算与函数
在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。
例如:
>>(5*2+1.3-0.8)*10/25
ans=4.2000
MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。
我们也可将上述运算式的结果设定给另一个变数x:
x=(5*2+1.3-0.8)*10^2/25
x=42
此时MATLAB会直接显示x的值。
由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。
若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例:
y=sin(10)*exp(-0.3*4^2);
若要显示变数y的值,直接键入y即可:
>>y
y=-0.0045
在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。
小整理:
MATLAB常用的基本数学函数
abs(x):
纯量的绝对值或向量的长度
angle(z):
复数z的相角(Phaseangle)
sqrt(x):
开平方
real(z):
复数z的实部
imag(z):
复数z的虚部
conj(z):
复数z的共轭复数
round(x):
四舍五入至最近整数
fix(x):
无论正负,舍去小数至最近整数
floor(x):
地板函数,即舍去正小数至最近整数
ceil(x):
天花板函数,即加入正小数至最近整数
rat(x):
将实数x化为分数表示
rats(x):
将实数x化为多项分数展开
sign(x):
符号函数(Signumfunction)。
当x<0时,sign(x)=-1;
当x=0时,sign(x)=0;
当x>0时,sign(x)=1。
小整理:
MATLAB常用的三角函数
sin(x):
正弦函数
cos(x):
余弦函数
tan(x):
正切函数
asin(x):
反正弦函数
acos(x):
反余弦函数
atan(x):
反正切函数
atan2(x,y):
四象限的反正切函数
sinh(x):
超越正弦函数
cosh(x):
超越余弦函数
tanh(x):
超越正切函数
asinh(x):
反超越正弦函数
acosh(x):
反超越余弦函数
atanh(x):
反超越正切函数
MATLAB的内部函数是有限的,有时需要为MATLAB定义新函数,为此必须编写函数M文件。
例:
.
在M文件编辑窗口录入:
functiony=f1(x)
y=sqrt((x-20).^2+100^2)+sqrt((x-120).^2+120^2) ;
以f1.m将文件存盘并退出M文件编辑状态,然后重新回到MATLAB命令窗口。
然后可用f1(3),f1(17)等计算。
注意:
函数文件的文件名必须与函数名同名。
练习:
编写
的函数M文件。
并计算f(1,2).
在M文件编辑窗口录入:
functionf=f2(x)
f=100*(x
(2)-x
(1)^2)^2+(1-x
(1))^2 ;
以f2.m将文件存盘并退出M文件编辑状态,然后重新回到MATLAB命令窗口。
然后可用f2(1,2)等计算。
2.数组与矩阵
2.1数组
2.1.1一维数组的构造方法
1)逐个元素输入法
如x=[2pi/2sqrt(3)3+5i]。
2)冒号生成法
以“first:
increment:
last”格式创建数组。
表示从first开始,以增量increment为步长,直到大于last前结束。
冒号表示increment是数据元素增量。
例如:
x=0:
0.5:
2x=0:
0.5:
2.4x=0:
0.5:
2.6
注1:
也可以用()或[]括住表示,如x=(0:
0.5:
2),x=[0:
0.5:
2]。
注2:
若增量为1,则可写成“fisrt:
last”
3)线性均匀采样函数法
格式:
linspace(first_value,last_value,number)
linspace(first_value,last_value)----产生first_value到last_value之间100个行矢量数值。
linspace(first_value,last_value,number)----产生两值域之间number个数值。
4)常用对数采样法
格式:
logspace(a,b)----在
之间,产生50个对数空间点的行矢量。
logspace(a,b,n)----在
之间产生n个对数空间点。
logspace(a,pi)----在
之间产生50个对数空间点。
可以用于在该区间的频率在单位圆内时的数字信号处理情形。
注1:
以上创建的是行矢量。
对列矢量的创建,可以用分号直接给出。
如x=[1;2;3;4;5;6]。
(当然也可用x=[123456]'创建,'表示转置)
2.1.2一维数组的访问与编辑
对数组的访问取决于下标的范围,下标取值在1-end之间,end是数组的最大下标值,也即数组的长度。
x=rand(1,5)%产生一个均匀分布的随机数数组
x(3)%访问第三个元素;
x([125])%第1、2、5个元素构成新的子数组
x(1:
3)%第1到3个元素构成的子数组
x(3:
end)%将3个元素以后的所有元素构成的子数组
x(3:
-1:
1)%形成由前3个元素构成的子数组
注1:
x(3:
-1:
1)是对数组x的访问,所以,其中的3表示的是起始下标值,-1表示的增量,1表示的是终止下标值。
但(3:
-1:
1)则是生成数组的冒号法,其中,3表示数组元素的起始值,-1是数组元素的变化步长,1是终止元素的最小值。
x(find(x>0.5))%将大于0.5的元素构成新的子数组
x([12344321])%允许重复访问形成新的长度大于原数组的新数组。
对数组的赋值方法与访问方法相似。
如:
x(3)=0
x([14])=[11]
注2:
要保证赋值数组的长度不超过被赋值子数组的长度。
否则,系统报错。
例如:
x([13])=[100200]%合法赋值
x([13])=[100]或x([13])=100%合法赋值
x([13])=[100200300]%非法赋值
删除数组中的数
x(3)=[] %删除数组x第3个位置的数
x([12])=[]%删除数组x第1,2个位置的数
2.1.3数组的运算
(1)标量-数组
设a=[a1,a2,...,an],c=标量,则
a+c=[a1+c,a2+c,...,an+c]
a*c=[a1*c,a2*c,...,an*c]
a./c=[a1/c,a2/c,...,an/c]=1/c*a
a.\c=[c/a1,c/a2,...,c/an]
a.^c=[a1^c,a2^c,...,an^c]
c.^a=[c^a1,c^a2,...,c^an]
(2)数组-数组
设a=[a1,a2,...,an],b=[b1,b2,...,bn],则
a+b=[a1+b1,a2+b2,...,an+bn]
a.*b=[a1*b1,a2*b2,...,an*bn]
a./b=[a1/b1,a2/b2,...,an/bn]
a.\b=[b1/a1,b2/a2,...,bn/an]
a.^b=[a1^b1,a2^b2,...,an^bn]
小整理:
适用於向量的常用函数有:
min(x):
向量x的元素的最小值
max(x):
向量x的元素的最大值
mean(x):
向量x的元素的平均值
median(x):
向量x的元素的中位数
std(x):
向量x的元素的标准差
diff(x):
向量x的相邻元素的差
sort(x):
对向量x的元素进行排序(Sorting)
length(x):
向量x的元素个数
norm(x):
向量x的欧氏(Euclidean)长度
sum(x):
向量x的元素总和
prod(x):
向量x的元素总乘积
cumsum(x):
向量x的累计元素总和
cumprod(x):
向量x的累计元素总乘积
dot(x,y):
向量x和y的内积
cross(x,y):
向量x和y的外积(大部份的向量函数也可适用於矩阵,详见下述。
)
2.2矩阵
2.2.1矩阵的构造方法
二维数组和矩阵的区别:
二维数组具有线性变换含义时,称为矩阵。
否则,称为数组。
从数据结构的形式上,两者没有区别。
二维数组的创建:
逐个元素的直接输入法(与一维相似)
三个要素:
一是必须以“[]”括住;数组的行与行之间必须以分号分隔,即“;”,或回车分隔;数组元素之间必须以逗号分隔,即“,”,或空格分隔。
1)利用已知数值变量值创建二维数组
例如:
a=2.75;b=33/99;%给变量a和b赋值
c=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]%创建二维数组
注1:
分号在数组中时,表示每一行的分隔符;用做命令的结束符号时表示该命令执行的结果不显示在屏幕上。
2)利用一维数组变量创建二维数组
例如:
a=[12345];%创建一维数组a
b=[678910];%创建一维数组b
c=[a;b]%用数组a和b创建二维数组c
3)对复数数组的另一种创建方法(分别创建实部和虚部,然后组成复数数组)
例如:
m_r=[123;456],m_i=[111213;141516]%分别创建实部和虚部
cn=m_r+i*m_i%合成复数
注2:
逗号在方括号中时表示元素与元素之间的分隔符;在命令后时表示赋值结果将被显示在屏幕上。
4)利用M文件创建和保存数组
对今经常要用到的大的、复杂的数组,一般可以建立一M文件保存之。
其步骤如下:
(1)打开文件编辑调试器,输入如下内容:
%mymatrixAM
AM=[1,2,3,4,5,6;…
3,4,5,6,7,8;…
6,7,8,9,10];
(2)取一M文件名来保存此文件,如mymatrix_AM.m。
(3)以后,只要在命令窗口中运行该M文件即可将其调如内存中来。
5)标准函数生成法
常用来生成标准数组的函数:
diag()----产生对角形数组(只实用于2维)。
格式有:
diag(v,k)----v是一个长为n的矢量,k是对角以上(k>0)或以下(k<0)的最大次对角序号,则产生一个对应角上元素为对称的矩阵。
k=0时为主对角矩阵。
diag(v)----产生一个与v的元素个数为准的主对角矩阵。
diag(X,k)----返回矩阵X的k对角线上元素,并以列向量形式返回。
diag(X)----返回主对角线上的元素,并以列向量形式返回。
eye()----产生高位矩阵(对高维不适用)。
格式有:
eye(n)----产生方阵n的单位阵。
eye(m,n)或eye([m,n])----在m*n阵对角线部分元素为1,其余为零的阵。
eye(size(A))----产生一个与A大小一致的1阵。
注1:
size的使用格式如下:
d=size(X)%返回数组X的维数到d向量保存。
[m,n]=size(X)%返回X的行、列数到[m,n]。
m=size(X,dim)%将dim维的多维数组的各维大小值存入m向量。
[d1,d2,…,dn]=size(X)%返回X的各维值到向量[d1,d2,…,dn]之各维变量中。
eye(m,n,classname)或eye([m,n],classname)----在对角线上产生1元素,其余为0,元素类型为classname。
magic(n)----产生魔方阵(对高维不适用)。
ones()----产生全1数组。
格式同zeros()。
zeros()----产生全0数组。
rand()----产生均匀分布的随机数数组。
randn()----产生正态分布的随机数数组。
格式同rand()。
2.2.2矩阵中元素的寻访和赋值
单个元素的访问与标识方法:
1)全下标标识方法
具体所在的行与列。
2)单下标标识方法
即只用一个下表来表示元素在数组中的位置。
其前提条件是必须先对二维或高维数组的元素的排列顺序有个一维的编号。
对MATLAB来讲,是按列从上致下的顺序进行编号的。
其单下标和全下标的转换关系是:
(r,c)l=(c-1)*m+r,其中m是矩阵的行数
A是一个4行5列的矩阵则A(2,3)=A(10).
(1)矩阵A的第r行,A(r,:
)
(2)矩阵A的第j列,A(:
j)
(3)依次提取矩阵A的每一列,将A拉伸为一列向量,A(:
)
(4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵,A(i1:
i2,j1:
j2)
(5)逆序提取矩阵A的第i1~i2行,构成新矩阵,A(i2:
-1:
i1,:
)
(6)逆序提取矩阵A的第j1~j2列,构成新矩阵,A(:
j2:
-1:
j1)
(7)删除A的第i1~i2行,构成新矩阵,A(i1:
i2,:
)=[]
(8)删除A的第j1~j2列,构成新矩阵,A(:
j1:
j2)=[]
(9)将矩阵A和B拼接成新矩阵,[A,B];[A;B]
2.2.3矩阵运算
(1)标量-矩阵运算:
与标量数组运算类似。
(2)矩阵-矩阵运算:
矩阵的元素对元素运算与数组的数组-数组运算类似。
矩阵加法:
A+B
矩阵乘法:
A*B
方阵的行列式:
det(A)
方阵的逆:
inv(A)
方阵的特征值与特征向量:
[V,D]=eig(A)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 函数 数组