我对matlab中的一个函数有疑问。此特定功能用于过滤光信号。正如您在下面看到的,我添加了我在函数和 while 循环本身中使用的编码。该代码是为 NXT Lego 机器人编写的。
是否有任何提示如何让计数变量( i = i + 1 )在函数中工作,以便我们可以绘制 Light(i)?因为当我们尝试不同的代码使其工作时,我们会收到一堆错误消息。
function  [light]  = filter_func( i)
  lightI(i) = GetLight(SENSOR_3);  
  if i==1
    light(i)=lightI(i)
  elseif i==2
    light(i) =  0.55*lightI(i) + 0.45*lightI(i-1)
  else
    light(i) =  0.4*lightI(i) + 0.3*lightI(i-1) + 0.3*lightI(i-2);
  end
end
i=1
while true
  lightI(i) = GetLight(SENSOR_3); % Get’s a lightvalue between    0 and 1024.
  if i>2
    light =filter_func(i)
    light=round(light); 
  else
    light(i) = GetLight(SENSOR_3);;
  end
  i=1+i  
  plot(light(end-90:end), 'r-');
  title('Lightvalue')
  axis([0 100 0 1023]) ;
end