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)))

  

 

posted @ 2019-11-03 15:16  陈奋斗  阅读(275)  评论(0)    收藏  举报