タグ付けされた質問 「fft」


8
Python / SciPyのピーク検出アルゴリズム
一次導関数などのゼロクロッシングを見つけることで自分で何かを書くことができますが、標準ライブラリに含めるには十分に一般的な関数のようです。誰か知ってる? 私の特定のアプリケーションは2Dアレイですが、通常はFFTのピークを見つけるためなどに使用されます。 具体的には、これらの種類の問題では、複数の強いピークがあり、無視すべきノイズだけが原因で発生する多数の小さな「ピーク」があります。これらは単なる例です。私の実際のデータではありません: 1次元ピーク: 2次元ピーク: ピーク検出アルゴリズムは、これらのピークの位置(それらの値だけでなく)を見つけ、理想的には、おそらく2次補間などを使用して、最大値のインデックスだけでなく、真のサンプル間ピークを見つけます。 通常、気になるのは数個の強いピークだけなので、特定のしきい値を超えているため、または振幅でランク付けされた順序付きリストの最初のn個のピークであるために選択されます。 私が言ったように、私はこのようなものを自分で書く方法を知っています。うまく機能することが知られている既存の関数またはパッケージがあるかどうかを尋ねています。 更新: 私はMATLABスクリプトを翻訳しましたが、それは1次元の場合にうまく機能しますが、もっと良いかもしれません。 更新された更新: sixtenbe は1-Dケースのより良いバージョンを作成しました。

4
高速フーリエ変換を使用してオーディオを分析する
私はpythonでグラフィカルスペクトラムアナライザーを作成しようとしています。 私は現在、1024ビットの16ビットデュアルチャネル44,100 Hzのサンプルレートのオーディオストリームを読み取り、2つのチャネルの振幅を一緒に平均しています。だから今私は256の署名されたショーツの配列を持っています。次に、numpyのようなモジュールを使用して、その配列にfftを実行し、その結果を使用して、グラフィカルスペクトラムアナライザーを作成します。これは、最初は32バーだけです。 高速フーリエ変換と離散フーリエ変換に関するウィキペディアの記事を読みましたが、結果の配列が何を表しているのかまだわかりません。これは、numpyを使用して配列にfftを実行した後の配列の様子です。 [ -3.37260500e+05 +0.00000000e+00j 7.11787022e+05 +1.70667403e+04j 4.10040193e+05 +3.28653370e+05j 9.90933073e+04 +1.60555003e+05j 2.28787050e+05 +3.24141951e+05j 2.09781047e+04 +2.31063376e+05j -2.15941453e+05 +1.63773851e+05j -7.07833051e+04 +1.52467334e+05j -1.37440802e+05 +6.28107674e+04j -7.07536614e+03 +5.55634993e+03j -4.31009964e+04 -1.74891657e+05j 1.39384348e+05 +1.95956947e+04j 1.73613033e+05 +1.16883207e+05j 1.15610357e+05 -2.62619884e+04j -2.05469722e+05 +1.71343186e+05j -1.56779748e+04 +1.51258101e+05j -2.08639913e+05 +6.07372799e+04j -2.90623668e+05 -2.79550838e+05j -1.68112214e+05 +4.47877871e+04j -1.21289916e+03 +1.18397979e+05j -1.55779104e+05 +5.06852464e+04j 1.95309737e+05 +1.93876325e+04j -2.80400414e+05 …

7
Pythonで高速フーリエ変換をプロットする
NumPyとSciPyにアクセスでき、データセットの単純なFFTを作成したいと思います。2つのリストがあります。1つはy値で、もう1つはそれらのy値のタイムスタンプです。 これらのリストをSciPyまたはNumPyメソッドにフィードし、結果のFFTをプロットする最も簡単な方法は何ですか? 例を調べましたが、それらはすべて、特定の数のデータポイント、頻度などを使用して偽のデータのセットを作成することに依存しており、データのセットと対応するタイムスタンプだけでそれを行う方法を実際には示していません。 。 私は次の例を試しました: from scipy.fftpack import fft # Number of samplepoints N = 600 # Sample spacing T = 1.0 / 800.0 x = np.linspace(0.0, N*T, N) y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) yf = fft(y) xf = np.linspace(0.0, 1.0/(2.0*T), N/2) import matplotlib.pyplot as plt …
98 python  numpy  scipy  fft 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.