Matlab

mac2025-05-14  1

Change Block Value

最近做simulation发现,mdl_advisor竟然不检查enable port 和 action port的设置。 遂对比一下codegen,发现codegen也只对比出了action port的value区别。 Interesting. Happy 100th anniversary.

Common Command Conclusion

find_system 查找simulink系统模型/模块/连线及注释;save_system 保存一个Simulink模型;add_block 在系统模型中加入指定模块delete_block 从系统模型中删除指定模块replace_block 替代系统模型中的指定模块close_system, bdclose 关闭一个simulink系统模型get_param 获取系统模型中的参数set_param 设置系统模型中的参数gcb 获得当前模块的路径名gcs 获得当前系统模型的路径名gcbh 获得当前模块的操作句柄bdroot 获得最上层系统模型的名称getSimulinkBlockHandle 从模块路径中获得模块句柄

Common Command Usage

// Check EnablePort 'StatesWhenEnabling' value disp_all_val = 1; blk = split(gcs, '/'); blk = blk{1}; %% Enable Block check. bl = find_system(blk,'BlockType','EnablePort'); for i = 1:length(bl) if ~strcmp(get_param(bl{i},'StatesWhenEnabling'), 'held') disp([get_param(bl{i},'StatesWhenEnabling') ' ' bl{i}]); set_param(bl{i},'StatesWhenEnabling','held') disp(['changed to: ' get_param(bl{i},'StatesWhenEnabling')]); elseif disp_all_val disp([get_param(bl{i},'StatesWhenEnabling') ' ' bl{i}]); end end save_system(blk); // GPD config check disp_all_val = 1; %% find model references topmodel = split(gcs,'/'); topmodel = topmodel(1); refs = find_system(topmodel, 'BlockType', 'ModelReference'); %% Since the coder loves i so much, there is no j or k. for ii = 1:length(refs) open_system(refs{ii}) sys_name = split(refs{ii},'/'); sys_name = sys_name(end); blks = find_system(sys_name, 'BlockType', 'SubSystem'); for i = 1:length(blks) hd = getSimulinkBlockHandle(blks(i)); atts = get(hd); if isfield(atts,'CGPD_Object') && isfield(atts,'pd_sim_dsn') ori = get_param(blks{i}, 'CGPD_Object'); an = ['mt_' lower(ori(8:end)) 'status']; if ~strcmp(get_param(blks{i},'pd_sim_dsn'), an) disp([get_param(blks{i}, 'CGPD_Object') ' ' get_param(blks{i}, 'pd_sim_dsn') ' ' blks{i}]); set_param(blks{i}, 'pd_sim_dsn', an); disp(['changed to: ' get_param(blks{i}, 'pd_sim_dsn')]) elseif disp_all_val disp([get_param(blks{i}, 'CGPD_Object') ' ' get_param(blks{i}, 'pd_sim_dsn') ' ' blks{i}]); end end end save_system(sys_name) close_system(sys_name) end

我是补充( ̄▽ ̄*) get(gcbh), show current block details

我是吐槽(😭) 为毛不支持matlab啊啊啊啊啊。

最新回复(0)