1.写在前面
虽然很基础,但是还是想再复习一下。
2.矩阵的序号和下标
%% 矩阵的序号和下标 %注意,在matlab中矩阵的序号是按列存储的 %以A=[1,2,3;4,5,6;7,8,9;10,11,12]为例 A=[1,2,3;4,5,6;7,8,9;10,11,12]; [m,n]=size(A); a=A(4,2) ;%=11 b=A((2-1)*m+4); %=11 %可以看到a=b,也就是说,A(i,j)=A((j-1)*m+i)主要的结论就是:若A是m×n矩阵,那么A(i,j)=A((j-1)*m+i),这个点很小,但是有的时候写代码经常忘记
3.矩阵拆分(就是拿出原有矩阵的一部分赋值给新的矩阵)
%% 矩阵拆分 j=3; B=A(:);%得到按列堆起来的矩阵(不是[1;2;3;4;5;6;7;8;9;10;11;12]而是[1;4;7;10;2;5;8;11;3;6;9;12]) C=A(:,j); %就是把A的第3列赋给C,C现在为[3,6,9,12] D=A(3:4,1:2);%D=[7,8;10,11]4.矩阵运算
%% 矩阵的运算 %矩阵加减:维数相同对应元素相加减,维数不同则报错 %矩阵乘法:A为m×n矩阵,B为n×p矩阵,C=A*B为m×p矩阵 %矩阵除法:A为非奇异方阵:左除:A\B=inv(A)*B,右除:B/A=B*inv(A) %矩阵乘方:A^b,要求A为方阵,b为标量 %还有点除,点乘。 a=[1,2;3,4]; b=[3,5;5,8]; a.*b %[3,10;15,32]就是对应元素相乘 a./b %[0.3333,0.4;0.6,0.5]就是对应元素相除 %矩阵求和 X=[0,1,2;3,4,5]; a=sum(X,1); %数组X的第1维元素求和,得到一个行向量[3,5,7](每一列求和) b=sum(X,2); %数组X的第2维元素求和,得到一个列向量[3;12](每一行求和)重点是左除和sum的用法
若A为非奇异方阵:左除:A\B=inv(A)*B,右除:B/A=B*inv(A)
X=[0,1,2;3,4,5];
a=sum(X,1); %数组X的第1维元素求和,得到一个行向量[3,5,7](每一列求和)
b=sum(X,2); %数组X的第2维元素求和,得到一个列向量[3;12](每一行求和)
5.矩阵其他运算
%% 矩阵其他运算
%inv:矩阵求逆
%det:求行列式的值
%eig:求矩阵的特征向量和特征值
A=[1,2,3;4,5,6;7,8,9];
[V,D]=eig(A) %V是特征向量,D是特征值构成的对角阵
E=eig(A);%E是A的全部特征值构成的列向量
%trace 求矩阵的迹
%rank 求矩阵的秩
6.特殊矩阵
%% 特殊矩阵
%zeros 全零矩阵
%ones 全1矩阵
%eye 单位矩阵(对角线位1)
%rand:0~1均匀分布的随机矩阵
%randn 生成均值为0,方差为1的标准正态分布随机矩阵
7. 善于运用点乘实现循环
要实现1+2+2^2+2^3+...2^63可以直接用一行matlab代码搞定
a=sum(2.^[0:63])