我在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 回答
你不能在模拟中使用这样的东西吗?
//找到输入中最后一个非零值的索引
[〜,last_non_zero] = max(find(input(1:i)> 0))
//使用此输入调用函数
output = fnc(input(last_non_zero))