Вы правы - блок мультиплексирования не выполняет то, что вы думаете.
Вход в блок Interpreted MATLAB
представляет собой вектор из 9 элементов, причем u(1)
и u(2)
являются первыми двумяэлементы этого вектора.Следовательно, в функции in1
и in2
есть оба скаляра, и вы не можете получить доступ более чем к первому / единственному их элементу.Попытка получить доступ к in1(2)
и т. Д. Выдает ошибку, которую вы видите.
Вы должны использовать блок MATLAB Function со следующим кодом внутри,
function y = fcn(in1,in2)
coder.extrinsic('summa'); % This allows you to call the external function
y = 0; % This tells Simulink that the output will be a double
y = summa(in1,in2);
Вы увидите, что блок имеет 2 входа, и вам следует раздавать выходные данные ваших константных блоков в них по отдельности.
Или даже лучше, если это возможно, вообще не использовать внешнюю функцию.Поместите весь свой код в функцию в блоке MATLAB Function
,
function out = fcn(in1,in2)
out = in1(1)+ in1(2)+ in1(3)+ in1(4)+ in1(5)+ in1(6)+ in2(1)+ in2(2)+ in2(3);