通过添加数组实现延迟效果c

时间:2013-08-27 13:37:01

标签: c arrays indexing

假设我有2个数组,buffer1和buffer 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超出界限但是可以我不知道如何实现我想要的东西;有可能吗?

1 个答案:

答案 0 :(得分:1)

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