Невозможно вывести многомерную матрицу в функции Matlab в Simulink - PullRequest
1 голос
/ 07 апреля 2011

Например, у меня есть функция, которая создает матрицу 2x2: [1 2; 3 4] У меня есть такая простая функция:

function[result] = Rho(x)
// I've tried and so:
result = [1 2; 3 4];
// And so:
result(1,1) = 1;
result(1,2) = 2;
result(2,1) = 3;
result(2,2) = 4;

В окне Matlab я вижу правильный результат:

>> Rho(1)
ans =
     1     2
     3     4

Но в Simulink я всегда получаю [1; 2; 3; 4]. Где моя ошибка?

enter image description here

P.S. Я забыл удалить аргумент x функции, потому что в реальной функции я делаю матрицу в зависимости от аргумента x. Но это не играет роли в нашем примере

1 Ответ

1 голос
/ 07 апреля 2011

Вероятно, возникла проблема, связанная с настройками параметров для вашего Функционального блока MATLAB (теперь он называется Интерпретированный функциональный блок MATLAB в более новых версиях) , Взгляните на диалоговое окно Parameters для этого блока:

enter image description here

Обратите внимание, что вы хотите установить Размеры вывода на 2 и снять флажок с Свернуть двумерные результаты до 1-D . Если этот флажок оставлен, то ваша матрица 2 на 2 будет превращена в одномерный массив путем извлечения значений вдоль каждого столбца слева направо, что в конечном итоге будет [1 3 2 4] в вашем примере.

После того, как вы примените вышеуказанные изменения, все, что вам нужно сделать, это изменить размер вашего блока отображения , чтобы он отображал ваши 2 строки и 2 столбца.

...