モデルの質量分析

조회 수: 5(최근 30일)
taichi muto
taichi muto 2020년 7월 22일
댓글: taichi muto 2020년 9월 22일
Simulinkにて作成したモデル全体の質量を求めることは可能でしょうか。
  댓글 수: 4
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개)

Community Treasure Hunt

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

Start Hunting!