モデルの質量分析

1 次查看(过去 30 天)
taichi muto
taichi muto 2020-7-22
Simulinkにて作成したモデル全体の質量を求めることは可能でしょうか。
  4 个评论
stozaki
stozaki 2020-9-22
taichi muto様
モデル内のブロックの個数をカウントする方法は回答致しました。ご所望の処理であればAcceptください。
もし差し支えなければ、ブロックの個数を "質量" と換算している意味をご教示頂けますか? ブロック数を "質量" と換算しているユースケースは初めてお見受けしたので、私の回答が的を得ているか否かが心配なためです。
宜しくお願いいたします。
stozaki
taichi muto
taichi muto 2020-9-22
一つのブロックの質量が求まった上で個数が分かれば、(質量)×(個数)で全体の質量に換算できるという意味で用いていました。 私の説明不足で複雑になってしまい申し訳ありません。 具体例を用いた詳しいご回答ありがとうございます。

请先登录,再进行评论。

采纳的回答

stozaki
stozaki 2020-9-22
编辑:stozaki 2020-9-22
taichi muto様
ご返信ありがとうございます。
モデル内のブロックの個数をカウントする方法ですが、幾つかの方法があります。
最も簡単にブロック数をカウント出来るのは次の関数をご利用ください。
sldiagnostics(bdroot(gcs),'CountBlocks')
% 例1
>> f14
>> sldiagnostics(bdroot(gcs),'CountBlocks')
ans =
''f14' 内のブロックのカウントが完了しました。
63 個のブロックが見つかりました。
メモ:ブロック タイプの横の "M" は、そのブロック タイプがマスクされた SubSystem または S-function であり、SubSystem と S-function のブロック合計として表示された総ブロック数に既に算入されていることを示しています。MATLAB Function ブロック、Truth Table、Stateflow の各ブロックは、SubSystem と S-function の合計から差し引かれますが、隠れたサポート ブロックは差し引かれません。
f14 Total blocks : 63
Constant : 1
Derivative : 2
Gain : 14
Inport : 9
Outport : 9
Product : 1
RandomNumber : 1
Scope : 3
SignalGenerator : 1
SubSystem : 5
Sum : 8
TransferFcn : 9
M Band-Limited White Noise. : 1
'
ただし、注意頂きたいのは対象モデル内に、Modelブロック (モデル参照) が含まれる場合、その内部のブロック数は上記関数で一度にカウント出来ないので、find_mdlrefs関数を使って、モデル内に含まれるModelブロックをリスト化し、Modelブロック毎にsldiagnostics関数を実行してください。
allModels = find_mdlrefs(bdroot(gcs));
-------------------------------------------------------------------------------------------------------------------------------------------------------
また、sldiagnostics関数の返り値は、コマンドウィンドウに表示される文字列情報なので、モデル内のブロックの個数を数値情報として取得して、別のプログラムで何かしらの処理を行いたい場合には向いていません。
その場合は、次のコマンドでブロックパス数を取得し、length関数で個数を判定できます。
blkLists = find_system(bdroot(gcs),'FollowLinks','on','LookUnderMasks','on');
% 例2
>> f14
>> blkLists = find_system(bdroot(gcs),'FollowLinks','on','LookUnderMasks','on');
>> length(blkLists)
ans =
64
ここで、最初の例では全ブロック数が63に対して、本例では64となっています。これは、find_systemの返り値に "モデル自身" もリストされるためです。従って、実質は63となります。
他にも方法はありますが、代表的な2例を挙げましたので、用途に応じて使い分けてください。
stozaki
  1 个评论
taichi muto
taichi muto 2020-9-22
私の要望に沿ったご回答ありがとうございます。 また、説明文も付け加えていただき感謝致します。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 診断の設定と表示 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!