matlab操作
此文只是本人copy加总结自己需要的点,请谨慎参考
一.矩阵表示
例如,A = [1,2,3;3,4,5].其中,矩阵的元素可以是数值、变量、表达式或者函数。
二.矩阵的创建
特殊矩阵的创建:a. ones(): ones(n)表示生成一个n*n的全1矩阵、ones(m,n)生成m*n的全1矩阵
b.zeros(): 类似ones()函数,其生成全0矩阵
c.rand(): 产生在(0,1)间均匀分布的矩阵
d.randn() : 产生均值为0,方差为1的标准正态分布随机矩阵
e.eye() :产生单位阵
三.矩阵的获取
1.获取元素:一种是直接元素下标索引,列如:Matrix(i,j);一种是元素序号索引,列如:Matrix(m)。其中,m = (j-1)*M+i,也就是一列一列的来,像Z型循环。
2.矩阵截取:(1) A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。
(2) A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。
四.矩阵运算
1. ’(转置):对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的,操作符.’共轭不转置(见点运算)
2.设A为m*n矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个列向量。diag(A,k),提取第k条对角线的元素
3.矩阵A实施左右翻转:fliplr(A),对矩阵A实施上下翻转:flipud(A);
矩阵的旋转:rot90(A,k):将矩阵A逆时针方向旋转90°的k倍,当k为1时可以省略
4.inv(A) : 求方阵A的逆矩阵;pinv(B):求A的伪逆矩阵
5.det(A) : 求A的行列式值
6.rank(A) : 求A的秩; trace(A): 求A的迹
7.范数:a、norm(V)或norm(V,2):计算向量V的2-范数;
b、norm(V,1):计算向量V的1-范数;
c、norm(V,inf):计算向量V的∞-范数
8.矩阵的特征值与特征向量
(1) E=eig(A):求矩阵A的全部特征值,构成向量E。
(2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量
(3).svd()特征值分解,Rx = U*S*V',mean S 是一个与M*N的对角矩阵,对角元素为特征值,U为大小特征向量组成
四.画图操作
例如:
%画功率谱
h = plot(Angle, 10*log10(gamma_L1SVD/max(gamma_L1SVD)));%参考MUSIC算法里功率谱的运用;plot(x,y)
hold on
plot(DOA,[0 0],'o'),
set(h,'Linewidth',2) %设置所有线宽为2
xlabel('angle (degree)')
ylabel('magnitude (dB)')
axis([-90 90 -60 0]) %axis[Xmin Xmax Ymin Ymax]
set(gca, 'XTick',[-90:30:90])%设置网格的显示格式,gca获取当前figure的句柄
grid on
1.plot命令:
单曲线:
(1). plot(y): 生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的曲线
(2).plot(x,y):生成的图形是以数组x的数值为横坐标、数组y的数值为纵坐标画出的曲线
多重线:
(1).plot(x,y1,x,y2)
(2).利用hold on命令:
plot(x,y) hold on plot(x,z)
hold off
2.网格和标记
(1).标题:形如:
title('A Curve')%标题
(2)X\Y轴标记
xlabel('Variable X')
ylabel('Variable Y')
(3)在图上加字符和标记
text(2.5,0.7,'sinx')%在x=2.5,y=0.7处加上字符串sinx
plot([5,15]',[0,0],'o')%在x=5,y=0;x=15,y=0;两处标注o
(4)坐标系的控制
axis([0 6 0 1])%axis([xmin xmax ymin ymax])
axis ('equal')%x轴与y轴的单位长度相等
axis('square')%图框呈方形
axis('off')%清楚刻度坐标
(5)多幅图形
subplot(2,2,1)%subplot(m,n,p);分成m*n个图形区域,p代表第几张
(6)属性操作
h = plot(x,y,x1,y1);
set(h,{'LineWidth'},{2;5})%线宽设置为2
set(h,{'Color'},{'r';'g'},{'linestyle'},{'--';'-'})%设置颜色和线型
set(gca,'xtick',[0:30:90]) %最后画网格,设置网格的显示格式,gca获取当前figure的句柄
%%%对Y轴进行标注
set(gca,'Ytick',[0,0.2,0.4,0.6,0.8,1]);
set(gca,'YTickLabel',{'a','b','c','d','e','f'});
五. 其他
(1) 非零元素信息
nnz(S) 返回非零元素的个数
nonzeros(S) 返回列向量,包含所有的非零元素
(2) 查看稀疏矩阵的形状 spy(S)
(3) find函数与稀疏矩阵
[i,j,s]=find(S)
[i,j]=find(S)
返回 S 中所有非零元素的下标和数值,S 可以是稀疏矩阵或满矩阵
(4)sort的用法:
Y=sort(X) : 表示对X进行升序排序,默认1
Y=sort(X,DIM,MODE),
参数DIM表示对哪一个维数进行排序,例如当X是一个二维矩阵,当DIM=1时表示对X的每一列进行排序,当DIM=2时表示对X的每一行进行排序。
参数MODE表示按哪一种模式进行排序,当MODE=‘ASCEND’的时进行升序排序,当MODE=‘DESCEND’时,进行降序排序。
[Y,I] = sort(X,DIM,MODE)
I返回索引序列,它表示Y中的元素与X中元素的对应。
(5)"~"的使用:
a.表示“非”:
if ~flag
.....
end
表示,只有在flag为0或false时,才会执行省略号中的内容;
不等号的写法:~=
b.表示忽略参数
[~,rank,~] = unique(array,'rows');
只需要第二个参数,若写成一下
rank = unique(array,'rows');
表示只接受第一个参数
(6)范数的求解:
格式:n = norm(A,p) norm函数根据p的值计算不同范数
norm(X): 计算矩阵(向量)的2-范数, 等同于norm(X,2),返回X中的最大奇异值
norm(X,1): 求解1-范数,返回X中的最大一列和
norm(X,Inf): 求解无穷范数,返回X中的最大一行和
norm(X,'fro'): 求解Frobenius范数,返回X和X‘的积的对角线和的平方和,即sqrt(sum(diag(A'*A)))
浙公网安备 33010602011771号