矩阵元素的引用方式:①A是一个矩阵,A(3,2)表示第三行第二列的元素。
②矩阵元素按照列来存储,先存储第一列元素,在存储第二列元素,直到最后。第一列第一个元素为1号元素,第一列第二个元素为2号元素,以此类推。A(3)
转换函数:①sub2ind(S,i,j)
将矩阵中指定元素的行、列转换成存储的序号。S
:组成矩阵的行数和列数的矩阵向量size(A)或[3,3](表示3行3列矩阵)
;i
:行向量;j
:列向量。i和j可以是矩阵。
②ind2sub(S,D)
:D
:序号。返回值是矩阵,表示行下表和列下标。
A(i,:)表示第i行全部元素
A(:,j):表示第j列全部元素
A(i:i+m,k:k+m)表示第i~i+m行内且在k~k+m列中的元素
A(i:i+m)表示第i~i+m行的全部元素
end运算符
表示某一维的末尾元素下标。
改变矩阵的形状:reshape(A,m,n)
:A要改变形状的矩阵;m改变后的行数;n改变后的列数。注意:reshape()函数只改变行数和列数,不改变存储顺序。
A(:)表示将每列元素堆叠起来,组成列向量。相当于reshape(A,6,1)。
加、减、乘、除
注意:MATLAB算术运算是在矩阵意义下进行的。单个数据的算术运算只是矩阵运算的一种特例。
加减操作时要求矩阵的维数相同。乘法运算要求A的列数与B的行数相等。运算规则参考《线性代数》这门课。
除法运算:
这里重点说一下除法运算。除法运算包含左除、右除。左除、右除就相当于除数矩阵和被除数矩阵。
假如A是非奇异方阵**(非奇异矩阵,即行列式不为0的矩阵,矩阵满秩,矩阵可逆,向量组线性无关。非奇异矩阵可以对线性空间做一个同等维度的线性变换,这个过程是可逆的,即可以由变换后的线性空间恢复原空间。)**,B/A相当于B*inv(A)
、A\B相当于inv(A)*B
。
inv(A)是求逆矩阵
。
对于含有标量的运算,两种结果相同。
比如:
>> 3/4
ans =
0.7500
>> 4\3
ans =
0.7500
其中一个是矩阵时也一样。
乘方运算:
A*a
:A是矩阵,a是标量。
点运算(.*、./、.\和.^):
点乘、点右除、点左除、点乘方。
两个矩阵进行点运算要求两个矩阵的对应元素进行相关运算。要求两矩阵同型。下面给出例子:
>> x = 0.1:0.3:1
x =
0.1000 0.4000 0.7000 1.0000
>> y = sin(x)*cos(x)
错误使用 *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。
>> y = sin(x).*cos(x)
y =
0.0993 0.3587 0.4927 0.4546
关系运算(小于、大于等):
>> A = [24,35,13;22,63,23;39,47,80]
A =
24 35 13
22 63 23
39 47 80
>> p = rem(A,2)
p =
0 1 1
0 1 1
1 1 0
>> p == 2
ans =
3×3 logical 数组
0 0 0
0 0 0
0 0 0
>> p == 0
ans =
3×3 logical 数组
1 0 0
1 0 0
0 0 1
rem(x,y):求整除x/y的余数
逻辑运算符(与、或、非)
算术运算符、关系运算符、逻辑运算符中,算术运算符的优先级最高、逻辑运算符优先级最低。逻辑非运算是单运算符,优先级比双目运算符高。