stateflow chart 内にて、繰り返し処理​を1ステップで行うに​はどうすればよいか?

2 views (last 30 days)
佳樹
佳樹 on 30 Oct 2022
Commented: 佳樹 on 31 Oct 2022
現在stateflow chartにて、開発を行っております。
開発モデルにおいて、stateflow chart 内にて繰り返し処理を行いたいために、テストとして以下のようなモデルを作成しました。
図1
図2図3
上記のモデルは、Chart内にて、[1 1 1 1]というInベクトルの各要素を、繰り返し処理によってOutベクトルの各要素に代入するという簡単なモデルとなります。
また、resolutionは1秒です。
Outベクトルは、初期値として[0 0 0 0]と設定されております。
このモデルを実行すると、Outの各要素の出力が異なっており、一つ目と四つ目では以下のようになります。
図4
一つ目、0秒の段階で代入が行われている
図5
四つ目、代入操作が3秒の時点で行われている。
上記のような代入操作の遅れは、図2において一つの要素の代入操作が1ステップで行われており、すべての操作に4ステップかかっていることによるものと思われます。
ここで、すべての操作を1ステップで行うためにはどうすればよいでしょうか?

Answers (1)

Atsushi Ueno
Atsushi Ueno on 30 Oct 2022
一つの方法として:
MATLABは配列(ベクトル)を扱えるので、ローカル変数 i やループ処理を削除して、単にen: Out = In;とすれば良いです。
その際、Stateflowチャートのアクション言語をMATLABにしてください。
  8 Comments
Atsushi Ueno
Atsushi Ueno on 30 Oct 2022
Subsystem ブロックのプロパティ「Atomic サブシステムとして扱う」にチェックを入れると、そのSubsystem ブロックは「Atomic サブシステム」になります。
実際に設定してみたのですが、Stateが前回値を保持する動きは変わりませんでした。
佳樹
佳樹 on 31 Oct 2022
承知いたしました。
何度もご丁寧な回答を下さり、ありがとうございます。

Sign in to comment.

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!