常⽤数值计算命令
5 null 求齐次线性⽅程组的基础解系。⽤来求解零空间,即满⾜⽅程组A*X=0的解空间。
6. 施密特正交化
7. givens变换
8. householder变换
9. qr
qr chol
10. triu, tril 矩阵的上三⾓矩阵和下三⾓矩阵
10. triu, tril
polyeig 求解多项式特征值问题
11. polyeig
12. norm
norm 计算⼏种不同类型的矩阵或向量的范数
global 定义全局变量
13. global
fix, round, floor, ceil。取整函数
14. fix, round, floor, ceil。取整函数
diff,差分。
gradient,求数值梯度。diff
15. gradient,
transpose,A.',ctranspose, A' 和conj的区别(转置与共轭,容易混淆)
16. transpose,A.',ctranspose, A' 和conj的区别(转置与共轭,容易混淆)
reshape ⽤于改变矩阵形状
17. reshape
cat 拼接矩阵或构造三维数组
18. cat
atan2,四象限反正切函数,值域为
19. atan2
;
atan值域为
atan
。
20. squeeze
squeeze 删除矩阵只有⼀⾏或⼀列的维度
3. awgn ⽣成加性⽩噪声; wgn
wgn⽣成具有⼀定功率谱的⽩噪声
3. awgn
out = awgn(in,snr)
noise = wgn(m,n,power)
4. pwelch,cpsd
pwelch,cpsd 功率谱密度计算
cpsd⽤于求互功率谱密度
[Pxx,f]=pwelch(x,window,noverlap,nfft,fs)
pxy = cpsd(x,y,window,noverlap,nfft)
默认采⽤Welch⽅法:1. 将信号分为多段(每段之间可以有overlapping,也可以没有); 2. 每⼀段加窗;3. 每⼀段做谱分析;4. 求平均。
null 求齐次线性⽅程组的基础解系。⽤来求解零空间,即满⾜⽅程组A*X=0的解空间。
5. null
6. 施密特正交化
7. givens变换
8. householder变换
9. qr qr chol chol 矩阵的QR分解和cholesky分解
基本⽤法:
[Q,R] = qr(A)(其中 A 是 m×n)⽣成 m×n 上三⾓形矩阵 R 和 m×m ⾣矩阵 Q,这样 A = Q*R。
[Q,R] = qr(A,0) ⽣成精简分解。如果 m > n,将仅计算 Q 的前 n 列和 R 的前 n ⾏。如果 m<=n,这与 [Q,R] = qr(A) 相同。 Cholesky 分解是把⼀个对称正定的矩阵表⽰成⼀个下三⾓矩阵L和其转置的乘积的 分解。
A = randn(3,4);
B = A*A';
C = chol(B)
[Q1,R1]= qr(A)
[Q2,R2]= qr(A')
Q2c = (R2(1:3,1:3)'A)';
QRQ = Q1*R1*Q2
eqr1 = Q1*R1-A;
eqr2 = Q2*R2-A';
echol = B-C'*C; %chol 分解误差(约等于0)
ee1 = R2(1:3,1:3)'*Q2(:,1:3)'- A; %证明A=R2'*Q2',R2(1:3,1:3)'是下三解矩阵
ee2 = R2(1:3,1:3)-C; %证明R2(1:3,1:3) = C
ee3= Q2c - Q2(:,1:3); %结合ee2=0,证明可由chol 分解求qr 分解
Err = [norm(eqr1),norm(eqr2),norm(echol),norm(ee1),norm(ee1),norm(ee1)]
计算结果如下,可注意到C与R2等价,也就是说,chol分解与qr分解间有联系。
C =
0.85986 -2.11833 0.42452
0.00000 4.63195 -1.00306
0.00000 0.00000 1.58989
Q1 =
-
0.222803 -0.207952 0.952426
0.964030 0.098248 0.246969
-0.144932 0.973192 0.178582
R1 =
3.10498 0.56395 -
4.04195 0.53246
0.00000 0.95028 0.95203 0.92567
0.00000 0.00000 -0.77590 0.73997
Q2 =
-0.804547 0.278285 0.107347 0.513554
-0.375948 -0.034402 0.608945 -0.697614
-
0.042338 -0.881775 0.319051 0.344799
0.457793 0.379271 0.718240 0.361539
R2 =
0.85986 -2.11833 0.42452
0.00000 4.63195 -1.00306
0.00000 0.00000 1.58989
0.00000 0.00000 0.00000
QRQ =
8.5986e-01 1.3600e-15 -2.2204e-16 -9.1593e-16
-2.1183e+00 4.6319e+00 1.6653e-15 -2.3315e-15
4.2452e-01 -1.0031e+00 1.5899e+00 9.9920e-16
Err =
2.1351e-15 2.1809e-15
3.5665e-15 2.1809e-15 2.1809e-15 2.1809e-15
在上述算例中:
,
,
从算例中也可看出
的前3列与
相同,⽽
的前3⾏与
相同。
10. triu, tril 矩阵的上三⾓矩阵和下三⾓矩阵
10. triu, tril
triu, tril返回包含对⾓元素的上、下三⾓矩阵。
A = [1,2,3,4; 5,6,7,8; 9,10,11,12]
UA = triu(A)
LA = tril(A)
计算结果为:
A =
1 2 3 4
5 6 7 8
9 10 11 12
UA =
1 2 3 4
0 6 7 8
0 0 11 12
LA =
1 0 0 0
5 6 0 0
9 10 11 0
polyeig 求解多项式特征值问题
11. polyeig
例如,对振动⽅程,
,
它对应的特征值问题为
。
则可⽤[phi, lambda] = polyeig(K, C, M)求解此问题,注意K,C,M顺序。
[X,e] = polyeig(A0,A1,...,Ap)
norm 计算⼏种不同类型的矩阵或向量的范数
12. norm
n=norm(v) 返回向量v的欧⼏⾥德。此范数也称为 2-范数、向量模或欧⼏⾥德长度。n=norm(X,'fro'),返回矩阵的Frobenius范数
。
n = norm(X, p),返回矩阵X的 p-范数,按下表规则取值:
详见:向量范数和矩阵范数 - MATLAB norm - MathWorks 中国
global 定义全局变量
13. global
若⼀些常量,在主程序和⼦程序中相同,为了减少函数传递的变量,可⽤global声明全局变量。可同时声明多个全局变量。⼦函数调⽤时,也需先声明。
需注意,不能出现其它与全局变量同名的局部变量(这⼀点需仔细检查)。
将以下M⽂件命名为sumtest,则运⾏后可⾏⼏个变量求和结果,且⼦函数⽆传递变量。
function sumtest
global a b c
a = 1;
b = 2;
c = 3;
sumabc
end
function sabc = sumabc
global a b c
sabc = a+b+c;
end
fix, round, floor, ceil。取整函数
14. fix, round, floor, ceil。取整函数
fix-向零⽅向取整
round-向最近的⽅向取整
round
matlab求导floor-向负⽆穷⼤⽅向取整
floor
ceil-向正⽆穷⼤⽅向取整
ceil
A = [-1.1, -0.9, -0.1, 0.01, 0.9, 1.1]
Afix = fix(A)
Around = round(A)
Afloor = floor(A)
Aceil = ceil(A)
计算结果为:
A =
-
1.1000 -0.9000 -0.1000 0.0100 0.9000 1.1000
Afix =
-1 0 0 0 0 1
Around =
-1 -1 0 0 1 1
Afloor =
-2 -1 -1 0 0 1
Aceil =
-1 0 0 1 1 2
diff,差分。
gradient,求数值梯度。diff
15. gradient,
gradient计算时对中间点
对边缘点
,
,其中n为总点数。
⾏优先求梯度,即先给出⾏向量的梯度。例如命令[G1,G2]=gradient(F)中,G1为对⾏求梯度的结果,G2为对列求梯度gradient计算是⾏优先求梯度
的结果。
列优先求差分。diff会导致数据长度减⼩(-1)。
diff求前后两之差. diff(X)与X(2:end)-X(1:end-1)相似,diff计算矩阵时列优先求差分
注:这两个命令默认数据时间间隔为1, 在使⽤时需注意除以两点间的时间间隔。(值得说明的时,两者求导都是近似的,对数据中频率⾼的成分会造成显著误差。)
F =[1,2,3,4,5; 1,2,4,7,11; 1,2,5,10,17;]
G = gradient(F)
[G1,G2] = gradient(F)
G0 = diff(F)
计算结果为:
F =
1 2 3 4 5
1 2 4 7 11
1 2 5 10 17
G =
1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.5000
2.5000
3.5000
4.0000
1.0000
2.0000 4.0000 6.0000 7.0000
G1 =
1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.5000
2.5000
3.5000
4.0000
1.0000
2.0000 4.0000 6.0000 7.0000
G2 =
0 0 1 3 6
0 0 1 3 6
0 0 1 3 6
G0 =
0 0 1 3 6
0 0 1 3 6
16. transpose,A.',ctranspose, A' 和conj的区别(转置与共轭,容易混淆)
transpose,A.',ctranspose, A' 和conj的区别(转置与共轭,容易混淆)
transpose相当于A.'
A.'
A.'返回A的⾮共轭转置,即每个元素的⾏和列索引都会互换。如果A包含复数元素,则A'不会影响虚部符号。transpose相当于A.'
ctranspose相当于A' ,即转置A'
A'返回A的共轭转置,即每个元素的⾏和列索引都会互换。如果A包含复数元素,则A'会影响虚部符号。ctranspose相当于A' ,即转置与共轭同时进⾏。
conj(A)对每个元素取共轭,位置不进⾏转置。
conj(A)
A = [1+2i, 2+3i; 3+4i, 5+6i; 7+8i,9+10i;]
B1 = A' %共轭转置
B2 = ctranspose(A)
C1 = A.' %转置
C2 = transpose(A)
D = conj(A) %共轭
计算结果为:
发布评论