У меня есть двухдорожечная модель, реализованная в simulink. Для того, чтобы контролировать скорость я использую ПИД-регулятор, так что выход скорости выглядит следующим образом:Сохранение определенного времени моделирования
теперь я хочу, чтобы реализовать функцию или Simulink блок MATLAB, который отслеживает время, когда скорость достигает стабильного поведения и помещает его в какое-то хранилище. Я пытался реализовать что-то подобное с помощью следующей функции MATLAB с MATLAB-функцией-блоком:
function y = fcn(t,v,dv,tv)
%#codegen
if (v==tv+0.01) & (dv<0)
y=t
end
Т часами сигнал, v скорость, Dv первого вывода скорости и тв является targetvelocity. Проблема с этой функцией заключается в том, что «y не определен на некоторых путях выполнения». есть ли у вас какие-либо идеи, как сделать эту работу?
все в порядке, это первая часть моей проблемы, но до сих пор ее не решает. вероятно, я не делал этого достаточно ясно: я хочу, чтобы функция запоминала время, когда оператор if был прав в течение первого времени. Но если я оставлю это так, он будет перезаписывать y на каждом этапе моделирования, потому что if всегда будет истинным после этого первого раза. Можете ли вы решить это? – Max
См. Обновленный ответ – Adriaan
хорошо, это выглядит хорошо для меня, но к несчастью не работает с simulink. я думаю, это потому, что simulink не может определить длину t или t, всегда имеет длину 1 для каждого шага моделирования.ошибка говорит об этом: Размер 2 фиксирован с левой стороны, но изменяется справа ([1 x 1] ~ = [1 x:?]). Функция «Steuerung/MATLAB Function» (# 194.168.169), строка 10, столбец 1: «y» Запустить диагностический отчет. Компонент: Функция MATLAB | Категория: Ошибка кодера – Max