我很乐意帮助我使用的算法。我的具体问题是在算法的 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