このループのベクトル化には、多くの情報が欠落しています。ラインだけ見てください
out_angle = out_angle - sigma*lut(j);
ベクトル化後、次のような式が必要です
out_angle(j) = out_angle(j-1) - sigma*lut(j);
out_angle電流が以前に計算された値に依存することがすぐにわかります。これは、 を明示的に表現できる場合を除いてout_angle、 を逐次的にしか計算できないことも意味します。out_angle
out_angle(j) = out_angle(j-1) - sigma*lut(j)
= out_angle(j-2) - sigma*lut(j-1) - sigma*lut(j)
= out_angle(j-3) - sigma*lut(j-2) - sigma*lut(j-1) - sigma*lut(j)
= ...
= out_angle(0) - sum_{k = 0}^j (sigma*lut(k))
sigmaにも依存するため、物事はより複雑になりjます。つまり、実際にはあなたが持っ
sigma(j)ているので
out_angle(j) = out_angle(0) - sum_{k = 0}^j (sigma(k)*lut(k))
sigma残念ながら、同じ方法で解決しなければならない暗黙的な式しかありません。の背後にある構造について少し考えることができますsigma。これは変数で、1yは負、-1yは正またはゼロです。つまり、次のようなものです。
sigma = -mySign(y)
whereは関数mySignのようにsign機能しますが、引数がゼロの場合は 1 を返します。
の明示的な表現が見つかった場合は、それを上記sigmaの明示的な表現に挿入できますout_angle。その後、(ほとんどの場合) コードをベクトル化できます。