matlab实现奇异值分解

一、原理

二、实现

%% 两种方法计算矩阵 A 的 SVD
A = [0,1; 1,1; 1,0];

%% 方法一:利用特征分解eig
% 计算右奇异矩阵V
[V,D1] = eig(A'*A);
n = size(D1,1);
index = n:-1:1;
D1 = diag(D1);
D1 = D1(index);
D1 = diag(D1, 0); 
V = V(:,index); 
% 计算左奇异矩阵U
[U,D2] = eig(A*A');
n = size(D2,1);
index = n:-1:1;
D2 = diag(D2);
D2 = D2(index);
D2 = diag(D2, 0); 
U = U(:,index);
% 计算奇异值矩阵
S = zeros(size(A));
n = min(size(A));
S(1:n,1:n) = sqrt(D1(1:n,1:n));

%% 方法二:利用奇异值分解svd
[U1,S1,V1] = svd(A);

 

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值