我在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函数中直接实现这一点的建议/解决方案。
答案 0 :(得分:-1)
你不能在模拟中使用这样的东西吗?
//找到输入中最后一个非零值的索引
[〜,last_non_zero] = max(找(输入(1:i)&gt; 0))
//使用此输入
调用函数output = fnc(输入(last_non_zero))