問題タブ [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 - MatLab - 画像の IFFT は複雑です
fft2
複雑な行列を与える画像を取得していますが、結果を元に変換するとifft2
、結果も複雑な行列になり、元の画像ではありません。ここで何が起こっているのでしょうか?
image - MatLab - FFT を使用して画像をシフトする
fft
exp(-j*2*pi*x*F) による乗算を使用して、画像 (2D マトリックスで表される) をシフトしたいと考えています。ここで、x は変位です。私は持っている:
しかし、入力が 2 次元配列であるため、H[F] で F を識別/表現するのに問題があります。どうすればこれを行うことができますか? 目的の出力は、同じフレーム内で水平軸に (x 単位で) シフトされた元の画像になるため、x+1 から開始されます。例として:
もしもinput=
そしてx = 2、私は欲しい:
matlab - MATLAB: 正確に最初の信号ではなく、信号を周波数に FFT し、IFFT を時間領域に戻します。
〜30フェムト秒のレーザーパルスで変化を再現しようとしています. このパルスを適切な時間で作成して表示します。また、このパルスのfftはmatlabでうまく表示されます(中心周波数と幅は非常に細かいです)。しかし、ifft() 関数を使用して変換されたものを逆変換すると、パルスは時間内に移動し (おそらく位相変化のため?? わかりません)、ピークの最大値も異なります..これの原因は何でしょうか? ? 私は間違った方法で ifft を使用していますか?
私が使用しているコードはこれです:
matlab - Matlab でのデコンボリューションのための単純な逆フィルターとウィーナー フィルターの比較
私は現在、単純な逆フィルターを、matlab を使用してデコンボリューション用のウィーナー フィルターと比較しようとしています。私の開始信号はexp(-t^2)
、これは、-.5 から .5 の時間で非ゼロの rect で畳み込まれることです。-.5 から .5 の範囲の振幅のノイズを導入しています。
時間ドメインから周波数ドメインへのマッピングの定義:
最初のアプローチでは、単純に の FT を の FT でc
割りf
、逆 FT を実行します。これは に相当しs = (approx.) ifft((FxS + N)/F)
ます。
2 番目のアプローチでは、ウィーナー フィルター を使用しW
、それを乗算してからC/R
逆 FT を実行します。これは になりS = (approx.) ifft(CxW/R)
ます。
ウインナーフィルターはW = mag_squared(FxS)/(mag_squared(FxS) + mag_squared(N))
.
'*' は畳み込みを意味し、'x' は乗算を意味します。
-3 から 3 の時間間隔で rect の 2 つのデコンボリューションを比較しようとしています。現在、デコンボリューションされた rect の結果のグラフは、元のグラフとはまったく異なります。
私が間違っていることについて、誰かが私を正しい方向に向けることができますか? ifftshift とさまざまなスケーリングをさまざまな順序で使用しようとしましたが、何も機能しないようです。
ありがとう
私のmatlabコードは以下の通りです:
matlab - 実験データを使用して MATLAB で ifft 関数を使用する方法
いくつかの実験データで MATLAB の ifft 関数を使用しようとしていますが、期待した結果が得られません。
対数サイン スイープ励振の周波数データがあるので、振幅 [g's]、周波数 [Hz]、および位相 (ポイントはパイロット ポイントであるため 0) を知っています。
それを ifft 関数に直接入力しようとしましたが、結果として複素数が得られました (時報なので、実際の結果を期待していました)。問題は信号が対称ではない可能性があると考えたため、この方法で対称部分を計算しました(「for」ループで)
振幅ベクトルの最後に追加しました。
このように、新しい振幅ベクトルは対称ですが、そのベクトルの次元も 2 倍にしました。これは、周波数ベクトルの次元も 2 倍にする必要があることを意味します。
とにかく、新しい振幅ベクトルを ifft に供給しましたが、それでも対数サイン スイープは得られませんが、今回の出力は予想どおり実数です。
プロットの時間 [s] を計算するために、次の式を使用しました。
私は何を間違っていますか?前もって感謝します
matlab - IFFT: 対称フラグ
MATLABで対称IFFTを実行するアルゴリズムを誰か説明してもらえますか?
例として:
ここで、X
は複素対称信号です。
matlab - 実験的な周波数領域信号の逆フーリエ変換を取得するには?
私はデジタル処理信号を時間厳守で使用しており、単純なものが必要であることを知っています。
大きさと位相が既知であり、角周波数もわかっている時間領域のIFRがあります。つまり、私はただ知っています:
逆フーリエ変換を適用すると、因果関係がないことがわかっている時間領域 h(t) の IRF が得られます。h(t)
正しい時間軸を使用して MATLAB で取得するにはどうすればよいですか?
上級者向けで、どんな助けにも感謝します!
performance - 実際の IFFT プロセスのこの部分は本当に最適ですか?
(I)FFT を計算する場合、N データ ポイントの通常の複素数 (I)FFT を使用して、「N*2 実数」データ ポイントを計算できます。ここでの私の用語についてはよくわかりませんが、これが私が説明した方法です。これについては、stackoverflow に既にいくつかの投稿があります。
これにより、サウンドの (再) 合成などを扱う場合によくある「実際の」データのみを扱う場合に、処理が少し高速化されます。
この速度の向上は、何らかの形で前処理ステップの必要性によって相殺されます... うーん... フィダドル? これを達成するためのデータ。これを完全に理解している人を説得するつもりはありませんが、前述のスレッドのおかげで、うまく機能する次のルーチンを思いつきました (ありがとう!)。
ただし、私のマイクロコントローラーでは、三角関数が既に LUT で最適化されているにもかかわらず、これは私が望むよりも少しコストがかかります。
しかし、ルーチン自体は、数学的に最適化して処理を最小限に抑えることが可能であるように見えます。私には、単純な 2D 回転に似ているように思えます。頭を包むことはできませんが、三角関数の呼び出しと算術演算の両方を少なくするだけでこれを実行できるように感じます。
他の誰かが私が知らないことを簡単に見て、この数学がどのように単純化されるかについての洞察を提供してくれることを期待していました.
この特定のルーチンは、ビット反転ステージの前に IFFT で使用するためのものです。
それがあなたの毒である場合、元の作業コード: