如何从这个MATLAB表达式实现for循环?

如何从这个MATLAB表达式实现for循环?,matlab,Matlab,在下面的代码中,我使用一个阶跃函数,它使用MATLAB的符号函数为变量x创建一个方形脉冲序列。如何使用for循环实现这一点,使事情更整洁 del_t=.005 t=-10:del_t:10; % Time span L=length(t); x=stp_fn(t)-stp_fn(t-1)+stp_fn(t-2)-stp_fn(t-3)... %input x(t) using step function +stp_fn(t-4)-stp_fn(t-5)+stp_fn(t-

在下面的代码中,我使用一个阶跃函数,它使用MATLAB的符号函数为变量x创建一个方形脉冲序列。如何使用for循环实现这一点,使事情更整洁

del_t=.005
t=-10:del_t:10;         % Time span
L=length(t);
x=stp_fn(t)-stp_fn(t-1)+stp_fn(t-2)-stp_fn(t-3)...     %input x(t) using step function
+stp_fn(t-4)-stp_fn(t-5)+stp_fn(t-6)-stp_fn(t-7)...    %
+stp_fn(t-8)-stp_fn(t-9)+stp_fn(t-10);                 %        

%step function
function u =stp_fn(t)
u=0.5*(sign(t+eps)+1);

看起来有点不寻常,但是嘿

x = 0;    
for i = 0 : 10
    x = x + (-1)^i*stp_fn(t-i); % ^i for alternating signs...
end

你宁愿做
2*mod(i,2)-1
而不是
(-1)^i
。提高到一个幂比乘法和减法更昂贵。谢谢你的提示!我检查了时间,事实上功率似乎比小I(50)的mod快。
x = stp_fn(t);
for i = 1 : 10
   if mod(i, 2)
      x = x - stp_fn(t - i);
   else
      x = x + stp_fn(t - i);
   end
end