実は、もっと速かった 「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)