chenmh_opast.m

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

M
29
字号
function [V, err, orth, V_all] = Chenmh_OPAST(x,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 = zeros(1,T);
orth = zeros(1,T); 
V_all = {};
for t = 1:T
    x_in = x(:,t);
    z = V'*x_in; h = Ei*z;
    g = h/(beta+z'*h);
    e = x_in-V*z;
        
    temp = g'*g+eps;
    Tao = (1/sqrt(1+e'*e*temp)-1)/temp;
    e_hat = Tao*V*g+(1+Tao*temp)*e;
%     e_hat = e;
    
    V = V + e_hat*g';                                    
    Ei = (Ei-g*h')/beta;

    err(t) = norm(e);
    orth(t) = norm(V'*V-eye(r),'fro');
    V_all{t} = V; 
end

⌨️ 快捷键说明

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