gpt4 book ai didi

matlab - 使来自库链接的信号名称唯一?

转载 作者:太空宇宙 更新时间:2023-11-03 19:36:33 24 4
gpt4 key购买 nike

好的,我已经为此苦苦挣扎了一段时间。完成以下任务的最佳方法是什么:

enter image description here

其中 Reaction Wheel 1-4 是库中同一 block 的链接。如图所示,当 Speed CounterSpeed DirectionCurrent 信号添加到最终总线输出时,MATLAB(理所当然地)提示:

Warning: Signals 9, 10, 11, 12 entering Bus Creator 'myAwesomeModel' have duplicated names 'Current'. These are being made unique by appending "(signal #)" to the signals within the resulting bus. Please update the labels of the signals such that they are all unique.

直到现在我一直在使用这样的“解决方案”:

enter image description here

也就是说,在中间放置一个 size-1-mux/gain-of-1/other-dummy block ,这样信号就可以重命名为唯一的东西。但是,我真的很愿意相信 MathWorks 已经想到了更好的方法来做到这一点......

构建这样的总线信号的“正确”方法是什么?感觉就像是我被迫采用了一种特定的设计/架构,但那究竟是什么,让我暂时不知所措......

最佳答案

这对我来说是一个很大的挑战,但看起来我已经解决了。此处为 Matlab R2007a。我将用一个已经完成的子系统来做这个例子,它的输入、输出……

1- 在 block 属性中,向 block 添加标签。这样做是为了在系统中识别 block 及其“兄弟”。 MY_SUBSYSTEM 用于此示例。

2- 再次阻止属性。在 CopyFcn 回调中添加以下代码段:

%Find total amount of copies of the block in system

len = length(find_system(gcs,'Tag','MY_SUBSYSTEM'));

%Get handle of the block copied/added and name the desired signal accordingly

v = get_param(gcb,'PortHandles');
set(v.Outport(_INDEX_OF_PORT_TO_BE_RENAMED_),'SignalNameFromLabel',['BASENAME_HERE' num2str(len)]);

3- 在 _INDEX_OF_PORT_TO_BE_RENAMED_ 中,您应该放置要为 block 的每个副本重命名的端口信号索引(从 1 开始)。对于单个输出 block ,这应该是 1。BASENAME_HERE 应该是端口基本名称,在本例中为“Current”。

4- 将 block 添加到所需的库中,并删除用于创建此示例的实例。从那里开始,当您从库中添加或复制现有 block 时,输出端口应命名为 Current1、Current2、Current3 等。请注意,您可以应用任何约定或格式。

希望这对您有所帮助。它对我有用,请毫不犹豫地提问/批评!

注意:显然,随着模型的增长,这种方法可能对计算机要求很高,因为 find_system 将不得不遍历整个模型,但是对于我来说,在中小型模型中看起来是一个很好的解决方法系统。

关于matlab - 使来自库链接的信号名称唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com