while循环中的收敛标准

时间:2017-06-08 15:51:54

标签: matlab

我有一个等式Y = DX。 Y是n乘k,D是n乘m,X是m乘k。在每次迭代中,我使用Y列和算法运行,并更新D的某些列。在迭代1中,算法使用Y的第1列并更新字典,对于迭代2,它使用Y的第2列,依此类推。

在每次迭代中更新D,我想使用标准[(规范(D-D1),'来自')^ 2< 0.0001],其中不需要运行算法k次。 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次满足收敛标准。

感谢您的关注

1 个答案:

答案 0 :(得分:0)

这是你在找什么?我相信如果满足收敛,你希望它退出循环。所以如果符合收敛,你就会回来。

for i=1:k
    D1=D;
    Y(:,i) = ..
    ...
    algorithm
    ...
    d=D-D1;
    delta= norm(d,'fro')^2;
    if delta>.0001
        return
    end
end