CSI笔记【11】:阵列信号处理及MATLAB实现(第2版)阅读随笔(三)
- Chapter5 阵列信号处理MATLAB编程常用函数介绍
- (1).创建矩阵
- (2).zeros 函数:创建全0矩阵
- (3).eye 函数:创建单位矩阵
- (4).ones 函数:创建全1矩阵
- (5).rand 函数:创建均匀分布随机矩阵
- (6).randn 函数:创建正态分布随机矩阵
- (7).hankel 函数:创建Hankel矩阵
- (8).toeplitz 函数:创建Toeplitz矩阵
- (9).det 函数:计算方阵行列式
- (10).inv 函数:求方阵的逆矩阵
- (11).pinv 函数:求矩阵的伪逆矩阵
- (12).rank 函数:求矩阵的秩
- (13).diag 函数:抽取矩阵对角线元素
- (14).fliplr 函数:矩阵左右翻转
- (15).eig 函数:矩阵特征值分解
- (16).svd 函数:矩阵奇异值分解
- (17).矩阵转置和共轭转置
- (18).awgn 函数:添加高斯白噪声
- (19).sin 函数:正弦函数
- (20).cos 函数:余弦函数
- (21).tan 函数:正切函数
- (22).asin 函数:反正弦函数
- (23).acos 函数:反余弦函数
- (24).atan 函数:反正切函数
- (25).abs 函数:求复数的模
- (26).angle 函数:求复数的相位角
- (27).real 函数:求复数的实部
- (28).imag 函数:求复数的虚部
- (29).sum 函数:求和函数
- (30).max 函数:求最大值函数
- (31).min 函数:求最小值函数
- (32).sort 函数:排序函数
- (33).poly2sym 函数:创建多项式
- (34).sym2poly 函数:讲符号多项式转换为数值多项式
- (35).roots 函数:多项式求根
- (36).size 函数:求矩阵大小
- Reference
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 ⊚ 张小飞 李建峰 徐大专 等 著.