Stateflowに​て、OOPのクラスの​継承のように、あるC​hartを親としてそ​れを継承した子Cha​rtを作成することは​できるか?

現在Matlab Stateflowにてモデル開発を行っております。
現在作成しようとしているいくつかのモデルには共通する構造があり、それらを簡単に作成することができないか考えております。
例えば以下のような3つのモデルについてです。
上記の3つのモデルは、Steady StateからUnsteady Stateに行くための条件が少し違うのみで、ほぼ同じ構造を有しています。
このような状況において、OOP(オブジェクト指向プログラミング)のように、共通する部分を親クラスとして定義し、差分を子クラスで作成するといったことは可能なのでしょうか?
可能な場合、どのようにして行うのでしょうか?

 Akzeptierte Antwort

Toshinobu Shintai
Toshinobu Shintai am 29 Feb. 2024

1 Stimme

上記の例(パラメーターをブロックごとに別々に設定する)であれば、ライブラリ機能を用いることで対応可能かと思います。
1
2
3
4
作成しましたモデルを添付しています。モデルはR2020bで作成しています。

5 Kommentare

佳樹
佳樹 am 1 Mär. 2024
ご回答誠にありがとうございます。
OOPとして考えるならば、今回の例ではmy_stateを親クラスとしてライブラリ化し、子クラスの差分要素は外部のsubsystemかchart、パラメーターとして利用するのが良いということでしょうか。
ご回答ありがとうございました。
Toshinobu Shintai
Toshinobu Shintai am 1 Mär. 2024
子クラスの差分要素として、パラメーターの値やデータ型のみが変わる場合は、上記にて示しましたライブラリ化とマスク機能の組み合わせで実現できます。
子クラスの差分要素として、モデル構造の変更が伴う場合(パラメーター新規追加も含む)、ライブラリのリンクを無効化し、内部を編集する必要があります。
リンクを無効にすると、ブロックの左下が以下のようになります。
佳樹
佳樹 am 1 Mär. 2024
ありがとうございます。
今回のモデルでマスク機能をはじめて使用したのですが、この機能を利用した方法にはどのようなメリットがあるのでしょうか?
(ただのライブラリブロックではなく、マスク化したライブラリブロックとすることにどのようなメリットがあるのでしょうか?)
例えば、「カプセル化による情報隠蔽」でしょうか?
<https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96>
また今回のモデルでは、条件A, B, Cが共通する条件で、条件D, E, Fが異なる条件式であるため、下図のような形にするのが私としては理解しやすいのですが、添付いただいたモデルにおいてVではなくCをInputとしているのにはどういう意図があるのでしょうか?
Toshinobu Shintai
Toshinobu Shintai am 1 Mär. 2024
> マスク機能をはじめて使用したのですが、この機能を利用した方法にはどのようなメリットがあるのでしょうか?
今回のように、ライブラリから引用して使うサブシステムブロックに、それぞれ固有のパラメーターを持たせることができることがマスク機能の利点です。
マスクには、他にもブロック固有の初期化処理を追加したり、いろいろできることがあります。
> 添付いただいたモデルにおいてVではなくCをInputとしているのにはどういう意図があるのでしょうか?
頂いたモデルの画像では、何が入力になっているのかが分かりませんでした。なので、適当にCを入力に設定しただけで、特に意味はありません。
D, E, Fの箇所がブロックに入力される値であるとしてモデリングしてくださっても、問題はありません。
佳樹
佳樹 am 1 Mär. 2024
> 今回のように、ライブラリから引用して使うサブシステムブロックに、それぞれ固有のパラメーターを持たせることができることがマスク機能の利点です。
承知いたしました。ありがとうございます。
添付いただいたリンクを参考にし、勉強させていただきます。
> 頂いたモデルの画像では、何が入力になっているのかが分かりませんでした。なので、適当にCを入力に設定しただけで、特に意味はありません。
承知いたしました。
ありがとうございます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Version

R2020b

Tags

Community Treasure Hunt

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

Start Hunting!