Simulink模型中替换字母型参数的脚本
使用说明:
脚本文件为searchNreplace.m
功能为 查找到Simulink_Demo.slx(范例文件名称) 中所有模块中参数值为Ts_Control的参数,并将其替换为 1e-5, 最后保存为 Simulink_Demo_new.slx 文件。
%说明:这个脚本用于打开 filename文件,
%将其调用的所有模块中,参数值为Search_value的,替换为Replace_Value.并保存为savename,也就是查找+replace的功能。
%注意: 是filename 调用的所有模块中的参数值只要相同的就会替换,所以请尽量使用比较特殊的参数值,以免替换错误。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%以下参数需要设置!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%设置工作目录
userpath('C:\Users\Thinkpad\Desktop\Test Matlab')
%待修改文件名 和 待保存文件名
filename='Simulink_Demo'
savename='Simulink_Demo_new'
%待查找参数,待替换值设置
Search_value = 'Ts_Control'
Replace_value = '1e-5'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%以上参数需要设置,如需批量,请修改为 数组 +循环的形式,或者函数的形式%%%%%%%%%%%
load_system(filename)
b = find_system(filename,'BlockDialogParams',Search_value)
for i=1:numel(b)
%找到simulink文件中的参数信息列表
BlockDialogParameters = get_param(b{i},'DialogParameters');
found=0;
% for j=1:numel(BlockDialogParameters)
% if BlockDialogParameters[j] == {'Ts_Control'}
% found =1;
% break;
% end
% end
BDnames = fieldnames(BlockDialogParameters);
%找到名称为Search_name
for j=1:numel(BDnames)
BlockParamValue = get_param(b{i},BDnames{j})
if strcmp(BlockParamValue,Search_value)
found=1;
break;
end
end
%将值设置为 Replace_value
if(found ==1)
try
set_param(b{i},BDnames{j},Replace_value)
end
end
end
%保存
save_system(filename,savename)
%close_system(filename)