実は、もっと速かった 「FFTによる直線たたみ込み」

今回の測定( 3ms )

前回の測定( 15ms )

1.ほんまに、速い、「FFTによる直線たたみ込み」

   前回と同一条件 (FFT point 8192 coef_length 2001point data_length 2048point)で、測ってみると、

    3ms or 4ms の、消費時間でした。

    実は、この数値が、非常に不安定でして、0msだったり、15msだったりで、

    3msと、安定に表示してくれたと、喜んでいましたら、VisualCを、再度立ち上げてみますと、

    プログラムを全く、いじってないのに、15msとか、0msとかの表示に変わってしまって、がっかりです。「ええ加減にしてくれ!」と、怒鳴りたくなります..... 

 プログラムの骨子は、同じですが、修正がありました。

 私の、実験の仕方は、試行錯誤ですので、色々な結果が、出てきます。

 最終的なものを、まだ、お見せできなくて、ごめんなさい。

 

    様々な計算の後で、low pass filterを通した後のデータが、元のデータと同じか、どうかも、調べて見ました。

    入力データは

   

    です。

    どうやら、cut_off周波数2KHzより、小さい周波数のようです。

元データと、ぴったり一致しませんが、スケーリングすると、元データと、近いものになります。

                    スケーリングなし                                                    スケーリングあり

 

    ここで、色々なデータを入力していますが

     capture_data2[i] = -1.0f  は、

    エラーには、ならないものの、変な値です。

理由不明哉。

まあ、Low Pass Filter を通さない時は、しっかり、元データを復元できます。

2.DLLの中で、new演算子は、無茶なのか?

    そうみたいです。

    classの中で、new して、デストラクタ内で、delete しようと、思ってたのに、エラー頻発。

されば、せめて、class内で、処理したいと、思い、

デストラクタ内に、置いておいた、配列を public:に、して置いて

class内に、Dispose_all() 関数で、delete し忘れないようにと、思いましたが

これも、エラー。

仕方がないので、DLLを使用するプログラム内で、一つづつ、消去することに、しました、ああしんど。

C++って、やっぱり、難しいなあ....

試行錯誤ばっかりで、申し訳ないですが、

まだ、やはり、未完成と、思うけど、

新しいDLLの hファイル、 cppファイルを、置いときます。

H.18.12.11 (20061211)