モデル内のすべてのサ​ブシステム参照の参照​サブシステムブロック​名とSLXファイルパ​スを取得するにはどう​すればよいですか?

7 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 6 Nov 2025
MATLAB R2023bを使用しており、トップレベルモデル「topModel.slx」があります。このモデル内には「Subsystem」という名前の「参照サブシステム」ブロックがあり、「参照サブシステム」ファイルは「testRefSubsystem.slx」として保存されます。
トップレベルモデルの名前を渡すことで、ユーザーがすべての "参照サブシステム" ブロックのファイルパスまたはモデル名を取得できる関数はありますか ("参照モデルの名前を返す関数 "find_mdlref" など)?

Accepted Answer

MathWorks Support Team
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});
終わり

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};

Categories

Find more on プログラムによるモデル編集 in Help Center and File Exchange

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!