MATLAB Function 次元について
Show older comments
Simulink内でMATLAB Function ブロック使用して演算しています。
画像のようにMATLAB Functionに入力すると
エラー内容
インデックスが行列の次元を超えています。配列 z は空であるため有効なインデックスを持ちません。
のようにエラーが発生しシミュレーションが実行できません。
次に、コメントアウトされている方(薄く表示されているA)の数値を使用すると、シミュレーションが実行されます。
この違いの原因が分かりません。どちらも出力されるデータ型はdouble型でした。

9 Comments
Toshinobu Shintai
on 7 Jan 2020
入力した信号線の次元とMATLAB Function内でそれに対応した変数の次元が一致してないのではないでしょうか。以下を参考に確認してみてください。
また、モデルを添付してくださると答えやすくなります。
Shoumei
on 7 Jan 2020
zはMATLAB Function内の変数ですよね?
入力uの値には0.15かmが入ると思いますが、これらの値からMATLAB Function内で算出される値がzの配列サイズを超えているのでは?と推測します。
MATLAB Function内のコードを見ないと何とも判断できませんね。
s
on 7 Jan 2020
s
on 7 Jan 2020
Shoumei
on 7 Jan 2020
z = find(t_ppd>t_cr);
で解が見つからず、zが空行列になっているのだと思います。
MATLAB Functionにブレークポイントを張って、zが意図した値になっているかどうかデバッグしてみてください。
s
on 8 Jan 2020
Etsuo Maeda
on 9 Jan 2020
z = find(t_ppd>t_cr);
の一行前にブレークポイントを置いて
t_ppd>t_cr
の出力をコマンドウィンドウで確認してみてはどうでしょうか?
HTH
stozaki
on 25 Jan 2020
MATLAB Functionの入力引数は6つあります。一方、ブロックの入力ポートは1つなので、5つはパラメータという認識で宜しいでしょうか?
その場合、5つのパラメータはどの様な属性を設定されているのでしょうか? コードのデバッグを行う前に、前提として変数、パラメータの属性を明らかにして頂く必要があると思います。
もし、未定義のままですと、既定の属性設定のままなので、意図された動作と異なる可能性もあります。
Answers (0)
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!