1

例如,我有创建矩阵 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]。我的错误在哪里?

在此处输入图像描述

PS我忘记删除函数的参数x,因为在实际函数中我根据参数x制作矩阵。但它在我们的示例中不起作用

4

1 回答 1

1

您遇到的问题可能是由于您的MATLAB Function 模块(现在在较新版本中称为Interpreted MATLAB Function 模块)的参数设置造成的。查看该块的参数对话框:

在此处输入图像描述

请注意,您需要将输出维度设置为 2 并取消选中将二维结果折叠为一维复选框。如果选中此项,那么您的 2×2 矩阵将通过从左到右沿每列提取值来转换为一维数组,最终[1 3 2 4]在您的示例中。

应用上述更改后,您要做的就是调整Display 块的大小,使其显示 2 行和 2 列。

于 2011-04-07T18:21:38.937 回答