在MATLAB Simulink中为总线施加增益并保留信号命名信息
Simulink总线施加增益后保留命名元素的解决方法
直接给总线加Gain模块会将其转换为向量,丢失所有命名元素,以下是几种可行的解决方式:
方法一:用Bus Assignment模块逐个处理
- 拖入Bus Assignment模块,输入端连接原始总线
- 打开模块参数面板,在「Assignment」列表中选择每个总线元素,将赋值表达式设为
[元素名] * [增益值](比如speed * 2) - 模块输出端直接输出保留所有命名结构的总线
方法二:用MATLAB Function模块批量处理
- 添加MATLAB Function模块,右键输入端口→「属性」→「数据类型」选择对应总线对象
- 编辑函数代码,批量遍历总线字段并施加增益:
function outBus = busGain(inBus, gain) fields = fieldnames(inBus); for i = 1:length(fields) outBus.(fields{i}) = inBus.(fields{i}) * gain; end end
- 输出端口同样设置为对应总线类型,输出即为带命名的总线
方法三:封装子系统批量处理
- 创建子系统,将输入端口设为总线类型
- 内部用Bus Selector拆分所有总线信号,给每个信号添加Gain模块,再用Bus Creator按原结构重新打包
- 子系统输出端口设为原总线类型,外部调用时直接输入总线即可得到保留命名的输出
注意事项
- 确保总线基于Simulink.Bus对象定义(可在Base Workspace中创建),临时总线可能无法被模块正确识别结构
内容的提问来源于stack exchange,提问作者Alex Band
相关产品推荐
相关产品推荐

