У меня есть функциональный блок Matlab в Simulink, который получает 2 входа и обрабатывает его для генерации вывода. В ходе моделирования в определенные моменты времени один из входов равен нулю. Я хотел бы использовать самый новый ненулевой вход для функции, когда это конкретное входное значение равно нулю. Как я могу это достичь? Я попытался создать постоянную переменную, которая обновляет последнее значение, отличное от нуля, но это, похоже, не работает.Функция Matlab в Simulink - сохранить предыдущее ненулевое значение ввода
EDIT 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
EDIT 2: На данный момент я зафиксировал проблему путем написания кода C, который использует статическую переменную, чтобы сохранить самую последнюю ненулевое значение входного сигнала. Но я по-прежнему приветствую предложения/решения, чтобы реализовать это непосредственно в функции Matlab.
Упорная переменная является способ сделать это. Покажите нам свой код. –
Фил, извините, я должен был включить этот код. См. Править. – arun
Код верен? За исключением того, что я считаю, что «isEmpty» должен быть «ошибочным», поскольку MATLAB чувствителен к регистру для встроенных функций. – DMR