0

假设我有 2 个数组,缓冲区 1 和缓冲区 2。这两个数组具有完全相同的数据并且长度相同。我可以像这样将这两个数组的结果相加:

for (n=0; n<100; n++)
    buffer3[n] = (buffer1[n] + buffer2[n]);

假设每个缓冲区都包含构成正弦波的数据点。如果我能够将 1 个数组中的点移动 180 度并再次添加它们,这会导致取消对吗?而且我认为 90 到 180 度之间的点会导致合成的正弦波的幅度变低,直到它最终抵消——如果你愿意的话,这是一种过滤效果。

我尝试使用以下代码执行此操作,但问题是何时n为 51,然后[n + 50]值为 101 ...这是无效的吗?

for (n=0; n<100; n++)
    buffer3[n] = (buffer1[n] + buffer2[n+50]);

我认为这里需要使用循环缓冲区或类似的东西,但我不确定如何将它集成到上面的代码中,我理解它与n越界有关,但我无法理解如何达到我想要的;可能吗?

4

1 回答 1

1
int offset = 50;
for (n=0; n<100; n++){                   
        buffer3[n] = (buffer1[n] + buffer2[(n+offset)%100]);
于 2013-08-27T13:44:04.767 回答