这个循环的矢量化缺少很多信息。看看线
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)
wheremySign
与sign
函数类似,但对于零参数给出 1。
如果您可以找到 的显式表示sigma
,则可以将其插入到上面的显式表示中out_angle
。之后,您可以(很可能)对代码进行矢量化处理。