数组的运算
数组是MATLAB中的基本构件。⼀维数组相当于向量,⼆维数组相当于矩阵.所以矩阵是数组的⼦集。
它们的赋值⽅式是:变量名=[变量值]。如果变量值是⼀个向量,数字和数字之间⽤空格或逗号隔开;如果变量值是⼀个矩阵,⾏数⽤空格或逗号隔开,⾏与⾏之间⽤分号隔开。
例:对于⼀个⾏向量A=(1,3,3,5,6),其赋值⽅式为
>>A=[1 3 3 5 6] 或>>A=[1,3,3,5,6]
对于⼀个列向量
1
2
3
4
,其赋值⽅式为
>>B=[1;2;3;4]
除上述⽅法外,还可利⽤冒号来定义向量,矩阵也可通过向量来定义
>>A=[m:q:n]
如要得到A1=(0,2,4,6,8) 只要输⼊>>A1=[0:2:8] 其中2表⽰步长(步距)在上⾯冒号定义向量时,步长可以为正可以为负,这时m 要⼤于n 例:>> u=[12:-2:4]
u =
12 10 8 6 4
另外>>a=[2:7]
a =
2 3 4 5 6 7
即使⽤冒号法定义向量时,若只有两个数,则默认步长为1.
MATLAB中还提供了两个特殊的函数linspace和logspace来产⽣向量.
linspace命令可以产⽣⼀个线性相隔的⾏向量,但是,我们需要做的事情是指定值的数量⽽不是增量。其语法是:linspace (x1,x2,n),其中x1和x2分别是下限和上限,⽽n是点数.
例: linspace(5,8,31)等效于[5:8:31] 如果省略n ,则默认间隔为1.
logspace命令可创建⼀个具有等对数间隔元素的数组.其语法为
ans =
0.1000 0.4642 2.1544 10.0000
上⾯(-1,1,4)在⽤linspace得到的向量是[-1.0000 -0.3333 0.3333 1.0000] 其中10-0.3333=0.4642,100.3333=2.1544
例:>>logspace(-1,2,4)
ans =
0.1000 1.0000 10.0000 100.0000
⼆维数组
数组是⼀个按逻辑结构进⾏排列的标量集合.数组可以只有⼀⾏、多列,或既有多⾏⼜有多列.这样的⼀个⼆维数组被称为矩阵.对于⼀个3×4维矩阵
2556
1619
1322
,其赋值⽅式为
>>C=[2 5 5 6;1 6 1 9;1 3 2 2] 例:>> A1=[12:-2:4]
A1 =
12 10 8 6 4
>>A2=[1,2,3,4,4];A3=[2,2,3,4,2]
当我们有A1,A2,A3这三个向量时,可通过下⾯的赋值⽅式>>C=[A1;A2;A3]
得到C为⼀个3×5的矩阵
1210864 12344 22342??
但如果输⼊>>C1=[A1 A2 A3]
C1
12 10 8 6 4 1 2 3 4 4 2 2 3 4 2
得到C1为⼀⾏向量.
数组运算是指数组对应元素之间的运算,也称点运算.矩阵的乘法、乘⽅和除法有特殊的数学含义,并不是数组对应元素的运算,所以数组乘法、乘⽅和除法的运算符前特别加了⼀个点。
矩阵是⼀个⼆维数组,所以矩阵的加、减、数乘等运算与数组运算是⼀致的。但有两点要注意:
(1)对于乘法、乘⽅和除法等三种运算,矩阵运算与数组运算的运算符及含义都不同:矩阵运算按线性变换定义,使⽤通常符号;数组运算按对应元素运算定义,使⽤点运算符;
(2)数与矩阵加减、矩阵除法在数学是没有意义的,在MATLAB中为简便起见,定义了这两类运算
例:
A=[1 2;3 4];B=[4 3;2 1]; r1=100+A
r1 =
101 102
103 104
r2_1=A*B,r2_2=A.*B r2_1 =
8 5
20 13
r2_2 =
4 6
matlab数组赋值6 4
r3_1=A\B,r3_2=A.\B
r3_1 =
-6.0000 -5.0000
5.0000 4.0000 r3_2 =
4.0000 1.5000
0.6667 0.2500 r4_1=B/A,r4_2=B./A
r4_1 =
-3.5000 2.5000
-2.5000 1.5000
r4_2 =
4.0000 1.5000
0.6667 0.2500
数组乘⽅A.^k A的每个元素进⾏k次⽅运算k.^A 以k底的,分别以A的元素为指数求幂值
r5_1=A.^2,r5_2=A^2
r5_1 =
1 4
9 16
r6_1=2.^A
r6_1 =
2 4
8 16
矩阵的转置运算
矩阵的转置运算包含两种运算即:“’”和“.’”,若矩阵的各项元素均为实数,则⼆者并⽆区别,若矩阵中包含复数,则“’”产⽣复共轭转置,“.’”则产⽣原矩阵的共轭.
>> a=[1-i,1-2*i;1+i,3-i]
a =1.0000 - 1.0000i 1.0000 - 2.0000i
1.0000 + 1.0000i 3.0000 - 1.0000i
>> a'
ans =1.0000 + 1.0000i 1.0000 - 1.0000i
1.0000 +
2.0000i
3.0000 + 1.0000i
>> a.'
ans = 1.0000 - 1.0000i 1.0000 + 1.0000i
1.0000 -
2.0000i
3.0000 - 1.0000i
矩阵的左除
MATLAB中⽤“\”运算符表⽰两个矩阵的左除,A\B为⽅程AX=B的解X,若A为⾮奇异⽅阵,则X=A-1B.如果A矩阵不是⽅阵,也可以求出X=A\B这时可⽤最⼩⼆乘法来求解AX=B中X矩阵。
矩阵的右除
MATLAB中⽤“/”运算符表⽰两个矩阵的右除,A/B为⽅程XA=B的解.
即A为⾮奇异⽅阵时X=B/A为BA-1
矩阵翻转
MATLAB中提供了⼀些翻转的特殊命令。B=fliplr(A)左右翻转命令、C=flipud(A)上下翻转命令、D=rot90(A)逆时针旋转90o >> A=[1,2,3;4,5,6;7,8,9]
A = 1 2 3
4 5 6
7 8 9
>> B=fliplr(A)
>> C=flipud(A)
C = 7 8 9
4 5 6
1 2 3
>> D=rot90(A)
D = 3 6 9
2 5 8
1 4 7
数组寻址
数组索引是数组中某⼀个元素的⾏号和列号,并且其⽤于跟踪数组的元素.
例如v(5)指的是向量v中的第5个元素
A(2,3)指的是矩阵A中的第2⾏、第3列中的那个元素.注意:⾏号总是在前⾯.这个表⽰法允许⽤户在不重新输⼊整个数组的情况下纠正数组中的某个项.
例如>> A(2,3)=6
就是将矩阵A的第2⾏、第3列中的元素修改为6.
冒号运算符也可⽤于数组的索引当中,
1)v(:)表⽰向量v中所有的⾏或列元素
2)v(2:4)表⽰向量v中的第2个到第4个元素:即v(2)、v(3)、v(4)
3)A(:,3)表⽰矩阵A中的第3列元素
4)A(:,2:5)表⽰矩阵A中的第2列到第5列的所有元素
5)A(2:3,1:3)表⽰矩阵A中既在第2⾏到第3⾏、也在第1列到第3列的所有元素
数组函数
MATLAB中有许多作⽤于数组的函数。下⾯给出些⼀些较为有⽤的数组函数。
1、cat(n,A,B,C,…)根据维数n,并通过连接数组A,B,C等等来创建⼀个新数组
2、find(x)计算⼀个包含数组x中⾮零元素索引的数组
3、[u,v,w]=find(A)计算u,v,w其中u为⾮零元素的⾏,v为⾮零元素的列,w为
其值,w可以省略
4、length(A)若是个向量,那么计算A的元素的个数,若A是m×n矩阵,则计
算m或者n中的最⼤值
5、max(A)若A是向量,返回A中的最⼤的代数学元素,若A是矩阵,则返回
⼀个包含每⼀列中最⼤元素的⾏向量,若全是复数,返回具有最⼤幅值的元素
6、[x,k]=max(A)类似上⾯,将最⼤值存储在⾏向量x之中,同时将他们的索引
存储在⾏向量k之中
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论