Невозможно вывести многомерную матрицу в функции Matlab в Simulink

Например, у меня есть функция, которая создает матрицу 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]. Где моя ошибка?

введите здесь описание изображения

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


person Larry Cinnabar    schedule 07.04.2011    source источник


Ответы (1)


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

введите здесь описание изображения

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

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

person gnovice    schedule 07.04.2011
comment
Большое тебе спасибо. Это помогло. Я должен заметить эту опцию в свойствах блока)) - person Larry Cinnabar; 08.04.2011