2011-04-07 219 views
1

例如我有创建矩阵2x2的函数:[1 2; 3 4] 我有这样简单的功能:无法在Simulink的Matlab函数中输出多维矩阵

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

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

enter image description here

请注意,你将要设置输出尺寸为2,塌陷2 d结果取消1-d检查框。如果这是左边的检查,那么你的2×2矩阵将变成一维数组,通过从左到右提取每列的值,在你的例子中最终为[1 3 2 4]

一旦你应用了上述改变,那么你所要做的就是调整你的Display block,以便它显示你的2行和2列。

+0

非常感谢。它有帮助。我应该在块属性中注意到这个选项)) – 2011-04-07 21:22:46