使用Frobenious范数容差的低秩逼近

时间:2015-12-13 05:52:32

标签: algorithm matlab svd image-compression

我很乐意帮助我使用的算法。我的具体问题是在算法的 while 循环中。

我希望算法做的是在对角线中依次添加 Sk 中的奇异值(直到达到所需的 TOL ),同时制作其余的矩阵0.期望的目标是对灰度图像执行此操作。

我只能获得2x2周期。

这是代码:

A    = rand(5)*30;
[M N]   = size(A);
[U S V] = svds(A);
% r  = rank(A);
Sn = S(1,1);
Sk   = blkdiag(Sn,zeros(N-1));
Ak   = U*Sk*V;
X    = A - Ak;
F    = norm(X,'fro');
tol  = 10;


i = 2;

while F > tol
    Snk  = S(i,i);
    Snew = diag([Sn;Snk]);
    Sk   = blkdiag(Snew,zeros(N-2));
    Ak   = U*Sk*V';
    F    = norm(A-Ak,'fro');
    i    = i + 1;
end

0 个答案:

没有答案