1

我在 simulink 模型中有两个长度不同的矢量信号。现在,我想将较短信号的值添加到较长信号的特定元素中。让我用一个例子来解释一下:

假设,信号 A 的值为 [1 2 3 4 5],信号 B 的值为 [2 4 8]。我想将 B 的值添加到 A 的第 1、第 3 和第 5 个元素,得到 [3 2 7 4 13]。相应的 matlab-command 将是A([1 3 5])=A([1 3 5])+B.

Insert Zero通过使用-Block将 B 填充到与 A 相同的长度,然后添加两个向量,在 Simulink 中应该可以实现同样的事情。不幸的是,这个块需要我没有的通信系统工具箱。除了使用嵌入式 matlab 函数之外,您还有其他可能性吗?

4

3 回答 3

1

您可以尝试使用选择器块来模拟 MATLAB 中的索引,我现在没有 Simulink,所以这里有一个模型的 powerpoint 版本。在选择器块中,您可以硬编码所需的索引,也可以使用块上的端口输入索引。

在这种情况下,模型实现,

Y = A([1 3 5 7 9]) + B;

有关详细信息,请参阅选择器块文档。

在此处输入图像描述

于 2012-06-01T00:57:53.680 回答
0

这不是你的问题,但你正在做的不是如何将两个不等间隔的信号加在一起。问题是您没有修改A. 假设B有值[10 10 10]。嗯,这意味着B有一个常数值 10,所以我们A只想成为A + 10。不是[10 2 13 4 15]

通常,您希望将信号内插到相同的间距,然后添加它们。首先生成与数组相对应的时间向量,然后将更粗略采样的信号插入另一个。

% Let's say t runs from 0 to 100
tA = linspace(0, 100, 5);
tB = linspace(0, 100, 3);
Bi = interp1(tB, B, tA);
combined = A + Bi;

Bi是上面的重要变量,在您的示例中,它具有 value [2 3 4 6 8]。如果您有信号处理工具箱,该功能resample对于一般信号可能会更好。

因此,如果您认为这更准确地描述了信号加法,您就知道在 Simulink 中的何处查找。寻找 Simulink 重采样模块。

于 2012-05-25T14:01:59.847 回答
0

虽然我不知道如何插入零块将信号填充到相同的长度。计算您指定的索引非常容易。

我会做这样的事情:

a = zeros(1000,1);
b = rand(20,1);
indexes = round(linspace(1,numel(a),numel(b)))
a(indexes) = a(indexes)+b;
于 2012-05-25T10:43:18.353 回答