chenmh_bisvd3.m
来自「Frequently used algorithms for numerical」· M 代码 · 共 33 行
M
33 行
function [V, err, orth] = Chenmh_BiSVD3(x,r,alpha);
% Chen minhua, 2006.02.10.
% Bi-Iteration SVD subspace tracking.
% "Bi-Iteration SVD Subspace Tracking algorithms,"
% IEEE Trans. Signal Processing.
%% Chen minhua, 2006.02.11.
%% Result of BiSVD3 is wrong. To be improved.
[p,T] = size(x);
if (r > p) disp(['Subspace dimension error!']); end
V = eye(p); V = V(:,1:r);
err = zeros(1,T);
Tria = zeros(r,r); % Upper Triangular.
Trib = ones(r,r); % Distance of consecutive subspaces.
for t = 1:T
x_in = x(:,t);
z = V'*x_in;
e = x_in-V*z;
err(t) = norm(e,'fro');
e_unit = e/err(t);
Augb = [(1-alpha)^0.5*z'; alpha^0.5*Trib];
[Gb,Trib] = qr(Augb,0);
zr = Trib'\z;
Auga = [alpha*Tria+(1-alpha)*z*zr'; (1-alpha)*err(t)*zr'];
[Ga,Tria] = qr(Auga,0);
V = [V, e_unit]*Ga;
orth(t) = norm(V'*V-eye(r),'fro');
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?