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 次元の結果を 1 次元に折りたたむ] チェック ボックスをオフにすることに注意してください。これがチェックされたままの場合、2 行 2 列の行列は、各列に沿って左から右に値を抽出することによって 1 次元配列に変換され、これが[1 3 2 4]例になります。

上記の変更を適用したら、2 行 2 列が表示されるようにDisplay ブロックのサイズを変更するだけです。

于 2011-04-07T18:21:38.937 に答える