【问题标题】:Simulink: Perform math operations with multilevel bus signalsSimulink:使用多级总线信号执行数学运算
【发布时间】: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

等等。

【问题讨论】:

    标签: simulink bus mux


    【解决方案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/…)。如果有任何不清楚的地方,请随时提出问题,但我认为这应该解释清楚。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多