誰でも私に説明できますか、なぜ次のエラーu
が発生するのかh
max_X = 100;
max_Y = 100;
h = ones(max_Y,max_X);
u = zeros(max_Y,max_X);
parfor l=1:max_X*max_Y
i = mod(l-1,max_X) + 1;
j = floor((l-1)/max_Y) + 1;
for k=1:9
m = i + floor((k-1)/3) - 1;
n = j + mod(k,-3) + 1;
h_average(k) = sqrt(h(i,j)*h(m,n));
u_average(k) = (u(i,j)*sqrt(h(i,j)) + u(m,n)*sqrt(h(m,n)))/(sqrt(h(i,j)) + sqrt(h(m,n)));
end
end
で代用できるようになり(i,j)
まし(l)
たが、関連する変数を計算しようとしてもp
、 に従って と呼び、代わりに(m,n)
と書くとエラー メッセージが表示されます。、それぞれに下線を引くだけです。ではありません。MATLAB は次のように述べています。u(p)
u(m,n)
u(m,n)
u(p)
h(m,n)
説明: MATLAB が
parfor
ループを効率的に実行するには、MATLAB ワーカーに送信されるデータの量を最小限にする必要があります。parfor
MATLAB がこれを実現する方法の 1 つは、反復で変数にインデックスを付ける方法を制限することです。示された変数は、 と互換性のない方法で索引付けされていますparfor
。推奨処置 インデックス作成を修正します。インデックス付けの制限の説明については、Parallel Computing Toolbox ドキュメンテーションの「スライス変数」を参照してください。
ここで何が問題なのですか?