如何向量化此for循环?

时间:2019-02-16 19:17:17

标签: matlab for-loop

我需要对此for循环进行矢量化处理以加快速度,我不确定该怎么做。

for k=1:n
  x2=x(k)*x(k);
  y(k) = (1-c1*x(k)+c2*x2-(x(k)/60)*x2)/...
         (1+c3*x(k)+c4*x2);
end 

1 个答案:

答案 0 :(得分:1)

只需按元素的power(或multiplication)和division。我用指数代替了x(k)的乘法。

y = (1 - c1*x + c2*x.^2 - x.^3/60) ./ (1 + c3*x + c4*x.^2); % assuming n = numel(x)
% if n ≠ numel(x) then replace all 'x's in above line with x(1:n)