問題タブ [ifft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - fft を使用した点積
畳み込み定理によれば、時間領域の畳み込みは fft 領域の積です。正しいゼロパディングを使用すると、次のように機能します。
ただし、この定理は逆に機能すると考えられます。時間領域の積は、fft 領域の畳み込みです。この部分がわかりません:
これにより、d_bis の複雑なベクトルが得られます。周波数領域での畳み込みを使用して、時間領域で作成された点ごとの積をどのように逆にすることができますか?
signal-processing - 信号合成のオーバーラップ加算
この質問が非常に基本的なものである場合は、申し訳ありません。
FFT を使用してオーディオ信号 (現在は単純な正弦波) を時間領域から周波数領域に変換してから、時間領域に戻して元の信号との差を比較しています。
現在私は:
- 重複しないフレーム (フレームごとに 1024 サンプルなど) を取得します。
- そのフレームの FFT
- 周波数ドメイン情報の iFFT
- スピーカーへの出力の送信
編集 (1):
これは現在動作しているようです (入力 = 茶色、出力 = 青のウィンドウのない画像とウィンドウのある画像を参照してください)。
編集終了 (1)
次に、overlapp-add メソッドを実行します。
- 50% のオーバーラップでフレームを取得します (サンプル 0-1023、512-1535、1024-2047...)
- ハニング ウィンドウを ecah フレームに適用します
- FFT
- iFFT
- ?? ? これは私の質問です!!
したがって、iFFT の最後には、1024 サンプルの出力フレームがあります。つまり、最初の 512 サンプルをスピーカーに送信し、残りの 512 サンプル (512 ~ 1023) をバッファーに保持して、次のフレームの最初の 512 サンプルに追加する必要があるということですか? それはそれと同じくらい簡単ですか、それとも私は何かを誤解していますか?
ありがとう!
signal-processing - 位相ボコーダー - 合成ウィンドウが必要ですか?
フェーズボコーダーで数週間苦労してきました。最終的な目標は、信号のタイム ストレッチを達成することです。私は多くの進歩を遂げてきましたが、まだ解決すべき問題が 2 つあります。
問題 1 : 合成ウィンドウは必要ですか?
任意のホップ サイズ (たとえば、N/2、N = フレームあたりのサンプル) で、入力信号 (正弦波) からオーバーラップ フレームを取得します。フレームにハニング ウィンドウを適用し、結果を FFT にフィードします。時間ストレッチを実現するために、iFFT を実行し、分析中に使用したホップ サイズとは異なるホップ サイズを使用して、出力フレームをオーバーラップ加算します。
問題は、出力ホップ ファクター = 0.5 (ホップ サイズ = N/2) の場合、出力はスムーズですが、ホップ サイズが大きくなると「振動」が聞こえることです。この画像は、ホップ ファクター = 1 (オーバーラップ ゼロ) の 8 フレームの出力を示しています。音が振動している理由は明らかです。ホップ サイズが小さい場合、フレームはより多くオーバーラップし、サウンドはよりスムーズになります。フェーズボコーディングについてはたくさん読んだことがありますが、しかし、ホップサイズが大きい場合にスムーズな出力を取得する方法がわかりません。私は何が欠けていますか?
Issue2 : 位相補正。
現在、出力は位相補正で悪化していますが、それは別の投稿に譲ります.
お時間を割いていただきありがとうございます。
python-2.7 - MATLAB と Python の両方で同じコードを実行しましたが、ifft2 は異なる値を返しますか?
OpenCV2 と NumPy を使用して、MATLAB と Python の両方で周波数領域に準同型フィルターを実装しようとしましたが、MATLAB コードは期待される答えを返しますが、Python はそうではありません。結果の画像は非常に奇妙です。私はすべての変数をテストし、違いがある唯一の点はIFFTであるという結論に達しました。MATLAB では、結果を関数に正常に適用し、exp
期待どおりのフィルター処理された元の画像を返すことができますが、Python の値ifft
は大きく異なります。たまたま同様の問題を抱えた他の投稿を見ましたが、満足のいく答えはありませんでした(おそらく私も検索が下手なだけです...)。MATLAB コード
および Python コード (いくつかのバグがあるかもしれませんが、全体的に機能します)
よくわかりませんが、なぜ結果がこんなに違うのでしょうか。誰にもアイデアはありますか?
fortran - 複素数から実数への fftw3 MPI フーリエ変換を実行するときの奇妙な動作
f(x,y) ~ cos(x) のスペクトル表現を座標空間に変換する問題を考えてみましょう。したがって、exp(i*x) + exp(-i*x) ----> f(x,y)、ここで f(x,y) = some_factor * cos(x) .
列優先のレイアウト (私の例は Fortran 2003/8 で以下に記述されています) では、スペクトル配列は次のように初期化されます。
変換後、 すべての列が同一で、各列が cos(x) 関数として動作する実数 (double)のtgt配列を取得する必要があります。
ただし、以下のコードを使用すると、奇数列のみが正しく動作し、偶数列はすべてゼロであるtgt配列が得られます。
何か間違っているとしたら?
私の fftw3 バージョンは 3.4.4 です。
c# - C# で fft を ifft に変換する
動作している FFT がありますが、それを IFFT に変換するにはどうすればよいですか? IFFT は、あなたが使用している FFT と同じようにすべきだと言われました。では、fft ic# から ifft を作成するにはどうすればよいですか? ifft を取得するには、いくつかの変更を加えるだけでよいと言われました。
自分でやろうとしましたが、入力した値と同じ値が返されません...
だから私は値の配列を作成し、それをfftに入れ、次にifftに入れましたが、入れたのと同じ値を取得できません...
だから私はそれを正しい方法で変えたとは思わない。
これは私が持っているFFTです: