Simulink中的Matlab函数 - 保留先前的非零输入值

时间:2016-08-23 19:19:15

标签: matlab simulink

我在Simulink中有一个Matlab功能块,它接收2个输入并处理它以生成输出。在模拟过程中,在某些时间点,其中一个输入为零。我想在特定输入值为零时使用函数的最新非零输入。我怎样才能做到这一点?我尝试创建一个更新到最近的非零输入值的persisent变量,但这似乎不起作用。

编辑1(包含代码):

function y = fcn(u)

persistent ref_val

if isEmpty(ref_val)
   ref_val=10.0
end

if(u(1)<=25)
   y=20.0
else
   if(u(2)>0)
      y=u(2)
      ref_val=u(2) 
   else
      y=ref_val
   end 
end

编辑2:目前,我通过编写一个使用静态变量来保留最近非零输入值的C代码来解决这个问题。但我仍然欢迎在Matlab函数中直接实现这一点的建议/解决方案。

1 个答案:

答案 0 :(得分:-1)

你不能在模拟中使用这样的东西吗?

//找到输入中最后一个非零值的索引

[〜,last_non_zero] = max(找(输入(1:i)&gt; 0))

//使用此输入

调用函数

output = fnc(输入(last_non_zero))