Simulinkのブロックパラメーターを変数名にしている場合があります。 その変数名を入れ替える場合の例をメモしておきます。
だいたいこんな感じです。場合によっては、そのまま動かないこともあるでしょう。その時は適宜修正します。
%%
%%
modelName = "hoge_model";
blockPaths = find_system(modelName, 'Type', 'Block');
pathNum = numel(blockPaths);
%%
orig_pattern = "orig_pattern";
new_pattern = "new_pattern";
for ii = 1:pathNum
blockName = blockPaths{ii};
% すべてのダイアログ・パラメーターを取得
dialogueParames = get_param(blockName, 'DialogParameters');
if numel(dialogueParames)
% ダイアログ・パラメーター名を取得
dialogueParamNames = fieldnames(dialogueParames);
paramNum = numel(dialogueParamNames);
% すべてのダイアログパラメーターのパラメーター値を取得
for jj = 1:paramNum
dialogueParamName = dialogueParamNames{jj};
param_val = get_param(blockName, dialogueParamName);
% param_valがstringsでない場合にregexprepがエラーになる。
idx = strfind(param_val, orig_pattern); % orig_patternが存在するかを検索
if numel(idx)
fprintf("%s value is %s.\n", dialogueParamName ,param_val)
new_string = regexprep(param_val, orig_pattern, new_pattern);
fprintf("%s param value %s is converted to %s.\n", blockName, param_val, new_string)
set_param(blockName, dialogueParamName, new_string)
param_val = get_param(blockName, dialogueParamName);
fprintf("%s value is %s.\n", dialogueParamName ,param_val)
end
end
end
end
%%