私は問題があります。
phi_new と phi_old のような 2D マトリックスの線形インデックス番号を格納する 2 つのマトリックス nbd_new と nbd_old があります。phi_old と phi_new はどちらも同じサイズです。私がする必要があるのは、セット nbd_new にあるがセット nbd_old にはないすべての位置を計算することです。次に、そのような位置ごとに、次のように phi_new を更新する必要があります。その位置の phi_old が 0 より大きい場合、その位置に phi_new を配置 = width+1 それ以外の場合、その位置に phi_new を配置 = -(width+1)
私はこのようなコードを書きました:
C = setdiff(nbd_new,nbd_old);
for k=1:length(C)
if phi_old(C(k))>0
phi_new(C(k))=(width+1);
else
phi_new(C(k))=-(width+1);
end
end
このコードは機能しますが、ループと if-then-else ステートメントのために非常に遅くなります。このコードをさらに最適化できますか?
よろしくお願いします!!
編集: phi_old と phi_new が両方とも 2-D 行列であり、行列 C がこの行列の線形インデックス (位置) のセットであることを確認してください。事前にわかりにくかったらすいません。間違ってファイではなくuと書きました。どちらも同じです。