首页 > 解决方案 > 如何矢量化这个 for 循环?

问题描述

我需要对这个 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 

标签: matlabfor-loop

解决方案


逐元素(或乘法)和除法就是您所需要的。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)

推荐阅读