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

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

Akzeptierte Antwort

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

Weitere Antworten (1)

交感神経優位なあかべぇ
SubSystem Referenceなど、そのモデルが依存する外部モデルファイル名は、モデルのロードなしに取得することができます。
modelName = 'testModel';
interface = Simulink.MDLInfo.getInterface(modelName);
externalFiles = interface.ExternalFileReference;
refBlocks = externalFiles(strcmp({externalFiles.Type}, 'SubsystemReference_Block'));
subsystemReferenceModelName = {refBlocks.Reference};

Kategorien

Mehr zu プログラムによるモデル編集 finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!