chenmh_obpasto.m

来自「Frequently used algorithms for numerical」· M 代码 · 共 30 行

M
30
字号
function [filtered_out, V, err_out, Orth, V_all] = Chenmh_obPASTO(x,Rn_inv,r,beta)

[p,T] = size(x);
if (r > p) disp(['Subspace dimension error!']); end
V = eye(p); V = V(:,1:r);
Ei = eye(r);
err_out = zeros(p,T);
filtered_out = zeros(p,T);
Orth = zeros(1,T);
V_all = cell(1,T); 
for t = 1:T
    xin = x(:,t);
    z = V'*Rn_inv*xin; h = Ei*z;
    g = h/(beta+z'*h);
    e = xin-V*z;
        
    temp = g'*g+eps;
    Tao = (1/sqrt(1+e'*Rn_inv*e*temp)-1)/temp;
    e_hat = Tao*V*g+(1+Tao*temp)*e;
    
    V = V + e_hat*g';                                    
    Ei = (Ei-g*h')/beta;
    
    filtered_out(:,t) = V*z;
    err_out(:,t) = e;
    Orth(t) = norm(V'*Rn_inv*V-eye(r),'fro');
    V_all{t} = V;
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?