問題タブ [dft]
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.
c++ - cv::findcontours と DFT の使用方法は? デバッグエラーになる
私がやっていることは、画像を(しきい値処理によって)前処理した後、画像の輪郭を見つけることです。そして、各輪郭の離散フーリエ記述子を取得したい (dft() 関数を使用) 私のコードは次のとおりです。
何が問題ですか???私はそれを見つけることができません..関数のパラメータのタイプ( cv::finContours や dft など)が間違っていると思います....
python - amplitude of numpy's fft results is to be multiplied by sampling period?
I try to validate my understanding of Numpy's FFT with an example: the Fourier transform of exp(-pi*t^2)
should be exp(-pi*f^2)
when no scaling is applied on the direct transform.
However, I find that to obtain this result I need to multiply the result of FFT by a factor dt
, which is the time interval between two sample points on my function. I don't understand why. Can anybody help ?
Here is a sample code:
matlab - DTMF、DFT ウィンドウの長さ
学校で DTMF デコーダーを作成する課題がありますが、何をどのように行う必要があるかを理解するのに苦労しています。まず、畳み込みを使用して信号のエネルギーを計算する必要があります。ウィンドウの長さと入力信号の絶対値を利用してこれを行います。
現在、適切なウィンドウの長さを取得する方法がわかりません。平滑化されたエネルギーは、信号をセグメント化するために使用され、後で基底ベクトル (?) を使用して信号内のさまざまな周波数を決定します。dtmf パルスは、少なくとも 40ms の無音によって少なくとも 40ms 離れています。サンプリング周波数は 8kHz で、信号の長さは約 17601 サンプルです。fs*0.04 を実行すると、ウィンドウの長さが得られると考えました。0.04=40ms ですが、平滑化されたエネルギー信号がシフトされるため、セグメントは入力信号の最大サンプルを超えます。
簡単に言えば、「正しい」ウィンドウの長さをどのように計算するのでしょうか?
前もって感謝します。
編集: 手順が更新されました。畳み込みを使用することは想定されていません。filter() を使用することになっています
matlab - ネストされた 5 つの FOR ループのベクトル化
DFT に基づくプロジェクトの一環として、MATLAB でプログラムを作成しています。
N x N
データ行列X
を 、対応する DFT 行列を とすると、Y
DFT 係数は次のように表すことができます。
回転因子 WN は周期的であるため、次の(1)
ように表すことができます。
指数は、与えられた に対して((n1k1 +n2k2)) N = p
のセットによって満たされます。したがって、そのようなデータをグループ化し、プロパティを適用することにより、(n1,n2)
(k1,k2)
WN^(p+N /2) = -(WN^P)
(2)
次のように表現できます。
どこ
Y(k1,k2,p)
特定の 2D 正方行列 (これは行列です) から 2D 行列のスライス (つまり、各スライスが 2D 行列である 3D 行列) を作成する必要がありますX
。X
512。
上記の式に基づいて、次のようなコードを書きました。ベクトル化する必要があります。
5 つの FOR ループがあるため、N の次元が大きいと実行時間が非常に長くなります。したがって、FOR ループをなくしてコードをベクトル化するための解決策を教えてください。コードを最高速度で実行する必要があります。ありがとうございます。また..
matlab - 画像のパワースペクトル
周波数領域で画像のパワー スペクトルを計算する (小さなプロジェクト) を開始しました。
だから、私が今まで持っているものは次のとおりです。
ここまでは良さそうです。さまざまな学術論文で見られるスペクトルに似たメッシュ プロットが得られます。
ただし、私が探しているのは、このパワー スペクトルと周波数のグラフ プロットであり、この周波数ベクトルを取得する方法が完全にはわかりません。たとえば、次のことができます。
しかし、これが負の周波数を発生させるため、これが完全に正しいとは確信していません.
ログ周波数とパワースペクトルをプロットする正しい方向に誰かが私を向けることができれば、本当に感謝しています。
signal-processing - 実出力 IFFT で半分の計算を節約する方法
実信号の FFT は共役対称性を持ちます。このプロパティを使用すると、メモリと計算の半分を節約できます。この実装は非常に簡単で、私はそれを実行しました。
次に、IFFT を実装します。これは共役対称信号に適用され、実際の信号が期待されます。IFFT は逆符号回転因子を使用した FFT とまったく同じです。計算とメモリの半分を節約する同様の方法はありますか?
audio - STFT のヘルツの計算
この質問は主にこの回答に関連しています。@Paul R がそれを見る機会があれば、ここが理想的です。
STFT を計算した信号があります。NFFT のサイズは 256 で、オーバーラップは 128 です。これにより、出力を含む 21 の個別のブロックが生成されます。
したがって、これをヘルツに変換して、信号内のこれらのポイントごとに異なるヘルツが何であるかを確認したいと思います。次の式を使用してマグニチュードを計算しました。
これにより、以下が生成されます。
私は主に、次の部分がどのように機能するかについて混乱しています。たとえば、基本的に、STFT のすべてのブロック (それぞれのサイズが 256) を含む 2D ベクトルがあります。したがって、ブロック内の各ポイントのマグニチュードを計算し、マグニチュードの最大数を計算してから、式を使用しfreq = i_max * Fs / N
ますか?
もしそうなら、それは次のようになりますか(例であり、実際のデータではありません):
これにより、STFT 出力ごとに大きさのベクトルが生成されます。そこから、どれが最も高いか (7 としましょう) を計算でき、次のように計算できます。
ここで、44100 = サンプル レート、4 = STFT ブロックのサイズ。
これにより、各ブロックの頻度がわかります。
これは正しいですか、それとも要点を完全に見逃していますか?
matlab - fft を使用した点積
畳み込み定理によれば、時間領域の畳み込みは fft 領域の積です。正しいゼロパディングを使用すると、次のように機能します。
ただし、この定理は逆に機能すると考えられます。時間領域の積は、fft 領域の畳み込みです。この部分がわかりません:
これにより、d_bis の複雑なベクトルが得られます。周波数領域での畳み込みを使用して、時間領域で作成された点ごとの積をどのように逆にすることができますか?