モデル内のすべてのサブシステム参照の参照サブシステムブロック名とSLXファイルパスを取得するにはどうすればよいですか?
7 views (last 30 days)
Show older comments
MathWorks Support Team
on 6 Nov 2025
Answered: 交感神経優位なあかべぇ
on 7 Nov 2025
MATLAB R2023bを使用しており、トップレベルモデル「topModel.slx」があります。このモデル内には「Subsystem」という名前の「参照サブシステム」ブロックがあり、「参照サブシステム」ファイルは「testRefSubsystem.slx」として保存されます。
トップレベルモデルの名前を渡すことで、ユーザーがすべての "参照サブシステム" ブロックのファイルパスまたはモデル名を取得できる関数はありますか ("参照モデルの名前を返す関数 "find_mdlref" など)?
Accepted Answer
MathWorks Support Team
on 6 Nov 2025
"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 Comments
More Answers (1)
交感神経優位なあかべぇ
on 7 Nov 2025 at 11:13
SubSystem Referenceなど、そのモデルが依存する外部モデルファイル名は、モデルのロードなしに取得することができます。
modelName = 'testModel';
interface = Simulink.MDLInfo.getInterface(modelName);
externalFiles = interface.ExternalFileReference;
refBlocks = externalFiles(strcmp({externalFiles.Type}, 'SubsystemReference_Block'));
subsystemReferenceModelName = {refBlocks.Reference};
0 Comments
See Also
Categories
Find more on プログラムによるモデル編集 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!