0

buffer1 と buffer 2 の 2 つの配列があるとします。これらの配列はどちらもまったく同じデータを持ち、同じ長さです。次のように、これら 2 つの配列の結果を一緒に追加できます。

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

これらのバッファのそれぞれに、正弦波を構成するデータ ポイントが含まれているとします。1 つの配列内のポイントを 180 度ずらして再度追加できた場合、これはキャンセルになりますよね? そして、90度から180度の間のポイントでは、結果として得られる正弦波の振幅が最終的に相殺されるまで低下すると思います-必要に応じてフィルター効果。

次のコードでこれを実行しようとしましたが、問題はn51[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 に答える