モデル内のすべてのサブシステム参照の参照サブシステムブロック名とSLXファイルパスを取得するにはどうすればよいですか?
7 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2025 年 11 月 6 日
回答済み: 交感神経優位なあかべぇ
2025 年 11 月 7 日
MATLAB R2023bを使用しており、トップレベルモデル「topModel.slx」があります。このモデル内には「Subsystem」という名前の「参照サブシステム」ブロックがあり、「参照サブシステム」ファイルは「testRefSubsystem.slx」として保存されます。
トップレベルモデルの名前を渡すことで、ユーザーがすべての "参照サブシステム" ブロックのファイルパスまたはモデル名を取得できる関数はありますか ("参照モデルの名前を返す関数 "find_mdlref" など)?
採用された回答
MathWorks Support Team
2025 年 11 月 6 日
"Referenced Subsystem" ブロックの名前を取得するには、Subsystem パラメーター "ReferencedSubsystem" で "get_param" 関数を使用できます。パラメータの詳細については、以下を参照してください。
https://www.mathworks.com/help/releases/R2023b/simulink/slref/subsystem.html#f8-894284_sep_mw_2eeb47de-3e19-446f-9f84-f03bc15c7bf2
SLX ファイルへのファイルパスを返すには、関数 "which" を使用できます。機能の詳細については、以下を参照してください。
モデルの名前が「TopModel」であると仮定すると、「find_system」関数を使用して「ReferencedSubsystem」パラメータに入力された「Subsystem」ブロックを検索できます。この例では、"blks" 変数に参照されるサブシステムの名前が格納されます。
load_system('topModel');
blks = find_system('topModel','RegExp','on','BlockType','SubSystem','ReferencedSubsystem','.');
次に、参照されるサブシステムのファイルパスを「which」関数で見つけることができます。この例では、変数 "filePaths" にパスを格納します。
refBlks = get_param(blks,'参照サブシステム');
i = 1の場合:length(refBlks)
filePaths{i} = which(refBlks {i});
終わり
0 件のコメント
その他の回答 (1 件)
交感神経優位なあかべぇ
2025 年 11 月 7 日
SubSystem Referenceなど、そのモデルが依存する外部モデルファイル名は、モデルのロードなしに取得することができます。
modelName = 'testModel';
interface = Simulink.MDLInfo.getInterface(modelName);
externalFiles = interface.ExternalFileReference;
refBlocks = externalFiles(strcmp({externalFiles.Type}, 'SubsystemReference_Block'));
subsystemReferenceModelName = {refBlocks.Reference};
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!