首页 文章

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

提问于
浏览
0

我在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 回答

  • -1

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

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

    [〜,last_non_zero] = max(find(input(1:i)> 0))

    //使用此输入调用函数

    output = fnc(input(last_non_zero))

相关问题