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);


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)