您的位置:首页 > 编程语言 > MATLAB

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

2013-04-14 19:32 369 查看
奇异值分解 (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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: