4

長さ 4096 の配列があります。計算された FFT の結果が含まれています。結果は 1024 のウィンドウ長で表示する必要があります。値を 4096 から 1024 に減らす方法と、結果が正しいままであること。

これは良い方法ですか?

int index = 0;
for(int i = 0; i < 1024; i++){
                    A = 0;
                    windowOffset = oldLength/1024;    ---> 4096/1024 = 4
                    while(windowOffset > 0){    
                      A += oldArray[index];
                      windowOffset --;
                      index++                        -----> index will go to 4096
                    }
                    newArray[i] =A/(blockSize/1024); ---- summ of 4 values/4

                }
4

2 に答える 2

3

4 つの平均を計算して表示するというあなたのアプローチは確かに有効です。ただし、「滑らかな」データには適していますが、高いピークの数が少ないデータにはあまり適していません。

FFT がほとんど小さな数値を返し、20 個のピークが平均を約 10 倍上回っている状況を考えてみましょう。アプローチを適用した後、ピークは残りますが、平均を 2.5 倍しか超えません。つまり、ヒストグラムは本来よりもはるかに滑らかになります。

この問題に対処する 1 つの方法は、調整された 4 つの数値の最大値を選択することです。これにより、ピークをそのまま維持できます。

于 2014-10-01T09:56:36.163 に答える
2

ダウンサンプリングの問題は非常に複雑であるため、それに関する研究論文もあります: Downsampling Time Series for Visual Representation .

高品質のダウンサンプリングが必要な場合は、ライブラリを使用して、 Largest Triangle Three Bucketsメソッドを選択します。

于 2018-09-07T04:58:16.890 に答える