If ブロックの条件切り替え時の値について
7 views (last 30 days)
Show older comments
MATLAB R2016b
以下のようにモデルを組みました。
シミュレーション時間は10sです。固定ステップでソルバーは離散です。サンプリング時間は0.1sです。
flag: 0sから5.0sまで1, 5.1sから10.0sまで0です。
data: 0sのとき1でサンプリング時間ごとに1増えるデータです。ですので、10.0sのときは101です。
Ifブロックでflag = 1のとき0を出力し、flag = 0のとき'data'を出力をしたいのですが、下記のように5.0sのときflag = 1ですが、結果は(simout)は0ではなく、'data'の51出力しています。
ためしに、MATLAB Functionで下記のようにコードを書きました。
function y = fcn(flag,data)
if flag == 1
y = 0;
else
y = data;
end
end
結果は同じでした。
Actionブロックのパラメータは下記の通りです。
flag = 1のときに0を出力させるにはどのようにしたらよろしいでしょうか?
大変恐縮ですが、お分かりの方いらっしゃいましたら、ご回答よろしくお願いいたします。
Answers (1)
stozaki
on 30 Jan 2020
問題は解決されましたでしょうか?
添付のモデルにて、
時刻5.0[s]のとき : flag = 1, simout = 0
時刻5.1[s]のとき : flag = 0, simout = 52
となります。
条件付き実行サブシステムの出力をMergeブロックに接続する際は、モデルの振る舞いが分かりにくくなります。
Mergeブロックのガイドラインに従った設定を行うようにしてください。Sasaki様のモデルを拝見していないのでわかりませんが、ブロックの設定だけでなく、コンフィギュレーションセットの設定、入力信号のタイミング等見直してみてください。
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!