私は方程式Y = DXを持っています。 Yはn×k、Dはn×m、Xはm×kである。各反復では、私はYの列を使用し、アルゴリズムの実行とDのいくつかの列が更新されます。反復1アルゴリズムではYの列1が使用され、辞書は更新され、反復2ではYの列2が使用されます。whileループの収束基準
各反復Dが更新されたとき、アルゴリズムk回実行する必要がない基準[(norm(D-D1)、 'fro')^ 2 < 0.0001]を使用します。 Dは更新される現在の辞書を意味し、D1は以前の反復で更新された辞書を意味する。
D1=D1+0.05*randn(n,m); % initializing D1 for first iteration to calculate d
d=D-D1;
delta= norm(d,'fro')^2;
k1=0;
while delta>0.0001
D1=D;
for i=1:k
Y(:,i) = ..
...
algorithm
...
end
d=D-D1;
delta= norm(d,'fro')^2;
end
私はこの形でそれを書くが、それはk回反復し、それ以来、正しくありませんが、私は収束基準を満たすjの< k回反復します。
あなたの注意に感謝します
私はそのアルゴリズムは、別の方法として、K – Masoud