Simulink:使用多级总线信号执行数学运算

Posted

技术标签:

【中文标题】Simulink:使用多级总线信号执行数学运算【英文标题】:Simulink: Perform math operations with multilevel bus signals 【发布时间】:2016-03-07 18:55:37 【问题描述】:

我正在寻找一种对多级总线信号求和的方法 在其层次结构中的最低级别 不会丢失总线信号结构。

MWE

例如,在下面的 MWE 中, 总线信号自动在最低电平求和, 但是,总线信号在通过 Add 块后丢失。

会产生一个矢量信号。

我会更喜欢一种产生的方法:

red + blue = purple

或者更具体地说:

red.[a b c].[1 2] + blue.[a b c].[1 2] --> purple.[a b c].[1 2]

在哪里

purple.b.3 = red.b.3 + blue.b.3

等等。

【问题讨论】:

【参考方案1】:

据我所知,对总线信号进行数学运算的唯一可能性是使用 MATLAB Function 模块。请注意潜在的不良性能!

要使用 MATLAB Function 模块,首先生成一个匹配的总线对象,并确保将合并 a / b / c 的两个总线创建器分别分配给输出此总线对象。这样做你会收到一个错误,因为 1 和 2 不是有效的字段名称,我将它们更改为 x1 和 x2。

在下一步中创建一个 MATLAB Function Block。 Set the two inputs and one output to your previous defined bus object。粘贴以下代码:

function y = fcn(u, v)
%#codegen

y.a=innerplus(u.a,v.a);
y.b=innerplus(u.b,v.b);
y.c=innerplus(u.c,v.c);
end

function y=innerplus(u,v)
y.x1=u.x1+v.x1;
y.x2=u.x2+v.x1;
end

【讨论】:

这是一个有益的开始。我没有意识到总线结构可以在 Matlab 环境中解释为结构类型元素。您的示例特定于特定大小;我会在一个单独的问题中询问如何添加结构并提供下面的链接。 @kando:文档中有介绍 (mathworks.com/help/simulink/ug/…)。如果有任何不清楚的地方,请随时提出问题,但我认为这应该解释清楚。

以上是关于Simulink:使用多级总线信号执行数学运算的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌入式matlab功能块的simulink模型中信号的频率内容?

matlab比较器在哪

Matlab位运算笔记

simulinkbus总线怎么增加输出口

simulink 15 数据类型转化模块

平稳随机模拟信号在simulink库中是哪个