0

マトリックス内のすべての要素を反復処理し、すべての要素の値が収束したときに停止するようにします。私はコード(以下)を書きましたが、間違った値を与えており、値が実際にループに入るかどうかはわかりません。

probability = (ones(1,2048) .* 1/2048); %vector of 2048 values
Tij = sum(StateTransitionfwd); %vector of 2048 values
Tji = sum(StateTransitionbwd); %vector of 2048 values
p = ((Tji .* probability) - (Tij .* probability)); %vector of 2048 values

threshold = (zeros(1,2048)); %vector of 2048 values
old = p; %vector of 2048 values
new = zeros(1,2048); %vector of 2048 values

while old - new > threshold %subtracting vector from the vector    
   old = p;     
   p = ((p * StateTransitionbwd) - (Tij .* p));     
   new = p;        
end 
4

2 に答える 2

0

古いベクトルも 0 ベクトルのように思えます。ループ条件をテストするときに NaN または inf のエラーが発生する場合は、norm(old-new) を使用してゼロ ベクトルのノルムを見つけようとしているためです。ベクトルのノルムは v/||v|| によって計算されます。||v||の場合 が 0 の場合、ベクトルは NaN になります。

于 2015-08-24T12:26:01.370 に答える