Вы, вероятно, обнаружите, что ваш код будет работать, внеся следующие изменения,
У вас нет данных переменного размера, и вы можете установить для всех этих параметров значения по умолчанию.
(Как указано в одном из других ответов), вам нужно изменить способ ввода x
в ваши уравнения, потому что в данный момент он не используется для вычисления xdot
.
Переместите x1
, x2
и x3
, чтобы получить вектор начальных условий 3 * 1 для блока Integrator
. (Предполагая, что это то, что они на самом деле.)
С этими изменениями блок должен обнаружить, что сигнал x
имеет размер 3 на 1 (поскольку блок Integrator
имеет 3 начальных значения), и, следовательно, ваш вывод xdot
равен 3 на 1, и ваш y
вывод - 1 на 3.
Чтобы быть в безопасности, вы также можете рассмотреть возможность размещения следующих 2 строк в верхней части вашей функции.
xdot = zeros(3,1);
y = zeros(1,3);
Эти строки будут использоваться во время инициализации блока, чтобы сообщать компилятору, какой будет размер выходных сигналов.
ПРИМЕЧАНИЕ: почему вы делаете y
вектором 1 на 3? Это очень необычно, и я подозреваю, что вы действительно хотите, чтобы это был вектор 3 на 1 (если вы хотите вывести состояния) или , вы должны суммировать значения x
, чтобы получить y
в этом случае это просто скаляр.
Не относится к вышеперечисленному, но вы также можете рассмотреть возможность задания констант параметров блока, чтобы вы могли изменять их без редактирования функции.