CSI笔记【11】:阵列信号处理及MATLAB实现(第2版)阅读随笔(三)

CSI笔记【11】:阵列信号处理及MATLAB实现(第2版)阅读随笔(三)

Chapter5 阵列信号处理MATLAB编程常用函数介绍

(1).创建矩阵

直接输入矩阵数值,分号代表行分割,创建数值矩阵。 e . g . e.g. e.g.

>>A=[1 3 5;2,4 6;3,8,9];
>>A
A=
    1 3 5
    2 4 6
    3 8 9

(2).zeros 函数:创建全0矩阵

>>A=zeros(n):创建n*n全0矩阵。
>>A=zeros(n,m):创建n*m全0矩阵。
>>A=zeros(size(B)):创建与矩阵B相同大小的全0矩阵。

(3).eye 函数:创建单位矩阵

>>A=eye(n):创建n*n单位矩阵。
>>A=eye(n,m):创建n*m单位矩阵。
>>A=zeros(size(B)):创建与矩阵B相同大小的单位矩阵。

(4).ones 函数:创建全1矩阵

>>A=ones(n):创建n*n全1矩阵。
>>A=eye(n,m):创建n*m全1矩阵。
>>A=zeros(size(B)):创建与矩阵B相同大小的全1矩阵。

(5).rand 函数:创建均匀分布随机矩阵

>>A=rand(n):创建n维均匀分布随机矩阵,其元素在(0,1)内。
>>A=rand(n,m):创建n*m均匀分布随机矩阵。
>>A=rand(size(B)):创建与矩阵B相同大小的均匀分布随机矩阵。

(6).randn 函数:创建正态分布随机矩阵

>>A=randn(n):创建n*n正态分布随机矩阵。
>>A=randn(n,m):创建n*m正态分布随机矩阵。
>>A=randn(size(B)):创建与矩阵B相同大小的正态分布随机矩阵。

(7).hankel 函数:创建Hankel矩阵

>>A=hankel(n):第一列元素为n,反三角以下元素为0。
>>A=hankel(n,m):第一列元素为n,最后一行元素为m,如果n的最后一个元素
                与m的第一个元素不同,则交叉位置元素取n的最后一个元素。

e . g . e.g. e.g.

>>n=[3 2 1];
>>m=[1 5 9];
>>A=hankel(n,m);
>>A
A=
   3 2 1
   2 1 5
   1 5 9
>>A=hankel(n);
>>A
A=
   3 2 1
   2 1 0
   1 0 0

(8).toeplitz 函数:创建Toeplitz矩阵

>>A=toeplitz(n):用向量n创建一个对称Toeplitz矩阵。
>>A=toeplitz(n,m):第一列元素为n,第一行元素为m,如果n的第一个元素
                  与m的第一个元素不同,则交叉位置元素取n的第一个元素。

e . g . e.g. e.g.

>>n=[1 2 3];
>>m=[1 5 9];
>>A=toeplitz(n);
>>A
A=
   1 2 3
   2 1 2
   3 2 1
>>A=toeplitz(n,m);
>>A
A=
   1 5 9
   2 1 5
   3 2 1

(9).det 函数:计算方阵行列式

>>det(A):计算方阵A的行列式。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3]
A=
   1 3 6
   2 4 5
   1 2 3
>>det(A)
ans=
   -1

(10).inv 函数:求方阵的逆矩阵

>>inv(A):计算方阵A的逆矩阵A^{-1}。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3];
>>inv(A)
ans=
   -2 -3  9
    1  3 -7
    0 -1  2

(11).pinv 函数:求矩阵的伪逆矩阵

>>pinv(A):计算矩阵A的伪逆矩阵A^{+}。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3];
>>pinv(A)
ans=
   0.1579   -0.8421   0.3684   2.1579
  -0.6842    1.3158  -0.2632  -1.6842
   0.4737   -0.5263   0.1053   0.4737 

(12).rank 函数:求矩阵的秩

>>rank(A):计算矩阵A的秩。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3];
>>rank(A)
ans=
   3 

(13).diag 函数:抽取矩阵对角线元素

>>A=diag(m):以m为主对角线元素,其余元素为0。
>>m=diag(A):取矩阵A的主对角线元素构造向量m。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3];
>>m=diag(A);
>>m
   1
   4
   3
>>m=[1 2 3];
>>A=diag(m);
>>A
A=
   1  0  0
   0  2  0
   0  0  3 

(14).fliplr 函数:矩阵左右翻转

>>fliplr(A):将矩阵A左右翻转。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3]
A=
   1  3  6
   2  4  5
   1  2  3 
>>fliplr(A)
ans=
   6  3  1
   5  4  2
   3  2  1

(15).eig 函数:矩阵特征值分解

>>d=eig(A):计算A的特征值。
>>d=eig(A,B):计算A的广义特征值。
>>[V,D]=eig(A):计算A的特征值对角阵D和特征向量构成的矩阵V。
>>[V,D]=eig(A,B):计算A的广义特征值对角阵D和广义特征向量构成的矩阵V。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3];
>>[V,D]=eig(A);
>>V
V=
   -0.5970   -0.9433    0.6669
   -0.7083    0.3209   -0.6977
   -0.3767    0.0847    0.2615
>>D
D=
   8.3451          0         0
        0    -0.5594         0
        0          0    0.2142

(16).svd 函数:矩阵奇异值分解

>>s=svd(A):计算矩阵A的奇异值向量。
>>[U,S,V]=svd(A):计算A的奇异值对角矩阵S和两个酉矩阵U和V。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3];
>>[U,S,V]=svd(A);
>>U
U=
   -0.6608   -0.7306   -0.1718
   -0.6544   -0.6730   -0.3447
   -0.3675   -0.1154    0.9228
>>S
S=
  12.1722          0         0
        0     1.2331         0
        0          0    0.0797
>>V
V=
   -0.2298   -0.5926    0.7720
   -0.5245   -0.5928   -0.6112
   -0.8198    0.5453    0.1746

(17).矩阵转置和共轭转置

>>A.':计算A的转置矩阵。
>>A':计算A的共轭转置矩阵。

e . g . e.g. e.g.

>>A=randn(2,3)+j*randn(2,3);     %创建一个复数矩阵
>>A
A=
   0.6715+0.7269i   0.7172+0.2939i   0.4889+0.8884i
  -0.2075-0.3034i   1.6302-0.7873i   1.0347-1.1471i
>>A'
ans=
   0.6715-0.7269i   -0.2075+0.3034i
   0.7172-0.2939i    1.6302+0.7873i
   0.4889-0.8884i    1.0347+1.1471i
>>A.'
ans=
   0.6715+0.7269i   -0.2075-0.3034i
   0.7172+0.2939i    1.6302-0.7873i
   0.4889+0.8884i    1.0347-1.1471i

(18).awgn 函数:添加高斯白噪声

>>Y=awgn(X,snr):向信号X添加高斯白噪声,信噪比snr单位为dB。信号X的功率假定为0dBW。
>>Y=awgn(X,snr,sigpower):向信号X添加高斯白噪声,信噪比snr单位为dB。信号X的功率为sigpower (dBW)。
>>Y=awgn(X,snr,'measured'):向信号X添加高斯白噪声,信噪比snr单位为dB。在添加噪声前计算信号X功率(dBW)。

e . g . e.g. e.g.

>>X=randn(2,5);     %创建一随机信号X
>>X
X=
   0.5377    -2.2588    0.3188    -0.4336    3.5784
   1.8339     0.8622   -1.3077     0.3426    2.7694
>>Y=awgn(X,10,'measured');     %添加高斯白噪声,信噪比为10dB
>>Y
Y=
   -0.2270    -1.8479    0.7237    -0.5039    4.3766
    3.5531     0.8265   -1.4238     1.1865    3.5722 

(19).sin 函数:正弦函数

>>y=sin(x):返回x中个元素的正弦值,x的单位为弧度(rad)。

e . g . e.g. e.g.

>>sin(45*pi/180)     %计算sin(45^\degree)
ans=
   0.7071

(20).cos 函数:余弦函数

>>y=cos(x):返回x中个元素的余弦值,x的单位为弧度(rad)。

e . g . e.g. e.g.

>>cos(45*pi/180)     %计算cos(45^\degree)
ans=
   0.7071

(21).tan 函数:正切函数

>>y=tan(x):返回x中个元素的正切值,x的单位为弧度(rad)。

e . g . e.g. e.g.

>>cos(45*pi/180)     %计算tan(45^\degree)
ans=
   1.0000

(22).asin 函数:反正弦函数

>>y=asin(x):返回x中个元素的反正弦值,y的单位为弧度(rad)。

e . g . e.g. e.g.

>>asin(0.7071)    
ans=
   0.7854

(23).acos 函数:反余弦函数

>>y=acos(x):返回x中个元素的反余弦值,y的单位为弧度(rad)。

e . g . e.g. e.g.

>>acos(0.7071)    
ans=
   0.7854

(24).atan 函数:反正切函数

>>y=atan(x):返回x中个元素的反正切值,y的单位为弧度(rad)。

e . g . e.g. e.g.

>>atan(1)    
ans=
   0.7854

(25).abs 函数:求复数的模

>>y=abs(x):如果x是实数,返回x的绝对值;如果x是复数,返回x的模。

e . g . e.g. e.g.

>>a=-1;
>>b=1+1j;
>>abs(a)
ans=
   1    
>>abs(b)
ans=
   1.4142  

(26).angle 函数:求复数的相位角

>>y=angle(x):返回复数x的相位角,单位为弧度(rad)。

e . g . e.g. e.g.

>>a=1+1j;
a=
   1.0000+1.0000i
>>angle(a)
ans=
   0.7854    

(27).real 函数:求复数的实部

>>y=real(x):返回复数x实数部分。

e . g . e.g. e.g.

>>a=1+1j;
a=
   1.0000+1.0000i
>>real(a)
ans=
   1  

(28).imag 函数:求复数的虚部

>>y=imag(x):返回复数x虚数部分。

e . g . e.g. e.g.

>>a=1+1j;
a=
   1.0000+1.0000i
>>imag(a)
ans=
   1  

(29).sum 函数:求和函数

>>B=sum(A):如果A为向量,返回各元素之和;如果A为矩阵,返回各列元素之和构成的一个行向量。
>>B=sum(A,dim):沿着dim指定的维数求和,其中dim\in[1,N], N为矩阵维数。
               当dim取1时,返回列向量之和构造的行向量;
               当dim取2时,返回行向量之和构造的列向量。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3;1 1 1];
>>sum(A,1)
ans=
   5   10   15
>>sum(A,2)
ans=
   10
   11
    6
    3
>>sum(A)
ans=
   5   10   15

(30).max 函数:求最大值函数

>>B=max(A):如果A为向量,返回各元素之中的最大值;如果A为矩阵,返回各列元素最大值构成的一个行向量。
>>B=max(A,[],dim):沿着dim指定的维数求最大值,其中dim\in[1,N], N为矩阵维数。
                  当dim取1时,返回列向量最大值构造的行向量;
                  当dim取2时,返回行向量最大值构造的列向量。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3;1 1 1];
>>max(A,[],1)
ans=
   2   4   6
>>max(A,[],2)
ans=
    6
    5
    3
    1
>>max(A)
ans=
   2   4   6

(31).min 函数:求最小值函数

>>B=min(A):如果A为向量,返回各元素之中的最小值;如果A为矩阵,返回各列元素最小值构成的一个行向量。
>>B=min(A,[],dim):沿着dim指定的维数求最小值,其中dim\in[1,N], N为矩阵维数。
                  当dim取1时,返回列向量最小值构造的行向量;
                  当dim取2时,返回行向量最小值构造的列向量。

e . g . e.g. e.g.

>>A=[1 3 6;2 4 5;1 2 3;1 1 1];
>>min(A)
ans=
   1   1   1
>>min(A,[],1)
ans=
   1   1   1
>>min(A,[],2)
ans=
    1
    2
    1
    1

(32).sort 函数:排序函数

>>B=sort(A):如果A为向量,则将A中各元素按从小到大排序;如果A为矩阵,则将A中各列元素按从小到大排序。
>>B=sort(A,dim):沿着dim指定的维数排序,当dim取1时,则将A中各列元素按从小到大排序;
                当dim取2时,则将A中各行元素从小到大排序。
>>B=sort(···,mode):将矩阵中元素按指定模式排列,当mode='ascend'时,则按从小到大排序;
                   当mode='descend'时,则按从大到小排序。
>>[B,V]=sort(A),将A排序,并返回一个与A同形的矩阵V,指定B矩阵中各元素在A中的位置。

e . g . e.g. e.g.

>>A=[1 10 3;5 2 6;3 4 8];
A=
   1   10    3
   5    2    6
   3    4    8
>>sort(A)
ans=
   1    2    3
   3    4    6
   5   10    8
>>sort(A,1)
ans=
   1    2    3
   3    4    6
   5   10    8
>>sort(A,2)
ans=
   1    3   10
   2    5    6
   3    4    8
>>sort(A,'descend')
ans=
   5    10    8
   3     4    6
   1     2    3
>>[B,V]=sort(A)
B=
   1    2    3
   3    4    6
   5   10    8
V=
   1    2    1
   3    3    2   
   2    1    3

(33).poly2sym 函数:创建多项式

>>y=poly2sym(c):返回一个符号多项式。其中,参数c为保存多项式的系数的向量。
>>y=poly2sym(c,'t'):返回一个符号多项式。其中,参数c为保存多项式的系数的向量,t为符号向量。

e . g . e.g. e.g.

>>c=[1 2 5 7];
>>y=poly2sym(c);
>>y
y=
   x^3+2*x^2+5*x+7

(34).sym2poly 函数:讲符号多项式转换为数值多项式

>>c=sym2poly(y):返回符号多项式y的数值系数构成的行向量。

e . g . e.g. e.g.

>>syms x;
>>y=x^3+2*x^2+5*x+7;
>>c=sym2poly(y);
>>c
c=
   1    2    5    7

(35).roots 函数:多项式求根

>>r=roots(c):返回一个由多项式根构成的列向量。

e . g . e.g. e.g.

>>c=[1,2,5,7];
>>r=roots(c);
>>r
r=
   -0.1981+2.0797i
   -0.1981-2.0797i
   -1.6038

(36).size 函数:求矩阵大小

>>[m,n]=size(A):分别返回矩阵的行数和列数。

e . g . e.g. e.g.

>>A=[1 2 3 4;5 6 7 8];
>>A
A=
   1    2    3    4
   5    6    7    8
>>[m,n]=size(A);
>>m
m=
   2
>>n
n=
   4

Reference

[1] 阵列信号处理及MATLAB实现(第2版) ⊚ \circledcirc ⊚ 张小飞 李建峰 徐大专 等 著.

上一篇:Lunx vim-go 开发环境搭建


下一篇:学习笔记(十四):基于位置无关感知策略的WIFI手势识别