simulinkのmuxブロックについて
25 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
現在,simulinkを用いて1リンクアームのシミュレーションを作成しています.
その際,添付のブロック図に示すように,2つのスカラー信号(ここでは速度,位置)をmuxブロックを使用してベクトルにし,matlab functionブロック(viscosity)に入力しています.
matlab functionブロック内では,以下のコードで,入力uからそれぞれ速度,位置を変数に割り当て,計算に使用します.
ところが,このシミュレーションのコンパイルを行った際に,次のようなエラーが表示されました.
入力は2次元になっていると思うのですが,どのような原因に基づくものなのか,ご教示願います.
エラーコード
範囲外のインデックス式です。要素 2 にアクセスしようとしています。有効な範囲は 1 ~ 1 です。 詳細情報関数 'MATLAB Function' (#30.98.99)、行 9、列 8: "2" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
関数または変数 'w' が未定義です。ローカル変数への 1 番目の代入は、そのクラスを特定します。 関数 'MATLAB Function' (#30.176.177)、行 17、列 9: "w" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
matlab function ブロック内のコード
function y = viscosity(u)
r = 0.005 * 100;
h = 0.015 * 100;
b = 0.01 * 100;
q = u( 1 );
w = u( 2 ); ←エラーに表示されている部分1
q_max = 2 * atan2( r , h );
if q > q_max
b = b * 100;
end
y = b * w; ←エラーに表示されている部分2
2 Commenti
Toshinobu Shintai
il 9 Giu 2020
私の環境で上記関数をコピーして実行してみましたが、特に問題無く実行できました。
入力を別の信号にしてみたり、viscosityだけを取り出して別の環境で実行してみたりして、確認してみるのはどうでしょうか。
Risposte (0)
Vedere anche
Categorie
Scopri di più su Model Verification in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!