matlab学习(2)——SVD()diag()函数

奇异值分解 (sigular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。[U,S,V]=svd(A),其中U和V代表二个相互正交矩阵,而S代表一对角矩阵。 和QR分解法相同者, 原矩阵A不必为正方矩阵。

使用SVD分解法的用途是解最小平方误差法和数据压缩

s = svd(X)
[U,S,V] = svd(X)
[U,S,V] = svd(X,0)
[U,S,V] = svd(X,'econ')
描述:
SVD命令是为了计算矩阵的奇异值分解。

s = svd(X) 返回一个向量的奇异值.

[U,S,V] = svd(X)

产生一个与X维度相同的对角矩阵S,并且降序排列非负对角元素。并且酉矩阵U和V使得X = U*S*V

[U,S,V] = svd(X,0) 

如果X是n和m并且m > n,那么奇异值分解计算只有第一个n列U和S是n,n

[U,S,V] = svd(X,'econ') 

如果X是n和m并且m > n,等价于svd(X,0)

对于m < n, 只有V的第一个m列是被计算的并且S是m*m.

X = diag(v,k)
以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
例:
>> v=[1 2 3];
>> x=diag(v,-1)
x =
     0     0     0     0
     1     0     0     0
     0     2     0     0
     0     0     3     0


>> v(2:5)=2;(2到5列均赋值为2)
>> x=diag(v,-1)

x =

     0     0     0     0     0     0
     1     0     0     0     0     0
     0     2     0     0     0     0
     0     0     2     0     0     0
     0     0     0     2     0     0
     0     0     0     0     2     0

我抬头仰望星空不是为了摘取流星,而是为了一个永不屈服的梦想。
原文地址:https://www.cnblogs.com/happycaoyue/p/3020758.html