問題タブ [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.

0 投票する
1 に答える
1401 参照

dft - DFT周波数減算

DFT 変換の最大振幅 M = A^2 + B^2 が周波数 F に対応する場合 (A - 実数、B - 周波数 F での DFT の虚数出力)、次のことを行うのは正しいですか?

元の波形データからその周波数の影響をキャンセル(減算)するには?データは、周波数が異なるいくつかのサインとコサインの合計であり、異なる係数が掛けられていると想定されます。

EDIT1:減算することでキャンセルできましたが、結果は正しいです。上記に誤りがありましたが、可能です。興味があれば、それを行う方法を投稿できます。

EDIT2: そして、次の DFT 変換を行うと、A 値と B 値でゼロに近い非常に小さい値が得られます。ただし、元のデータは 4 つの周波数 (正弦と余弦) の合計である可能性がありますが、DFT 変換では、DFT のサイズを 2 で割った値が得られることを覚えておく必要があります。

0 投票する
2 に答える
1760 参照

python - 単純なPythonスクリプトのCooleyTukeytwiddle factor

cooley tukeyメソッドがどのように機能するかを読んでいますが、次のpythonスクリプトにいくつか問題があります。

xrange(M)]+[N]行のkのtwiddles=[math.e **(inv * 2j * math.pi * k / N)は何をしますか?配列のように見えますが、なぜ+ [N]なのですか?

では、なぜtwiddles[-1]値にアクセスするのでしょうか。

私はこれを理解することはできません

0 投票する
2 に答える
795 参照

c++ - CUDA convolutionFFT2D の例 - 理解できない

私は Cooley Tukey アルゴリズムを研究し、理解しました。これらのカーネルまで、CUDA convolutionFFT2D の例ですべてを取得しました。

spProcess2D 呼び出し -> 多くの spProcess2D_kernel を呼び出す -> spPostprocessC2C、mulAndScale、および spPreprocessC2C

完全なコードは次のとおりです: http://nopaste.info/30c13e44fe.html (convolutionFFT2D.cu、ここに spProcess2D 関数があります) http://nopaste.info/78d22afac2.html (convolutionFFT2D.cuh、ここに他の関数があります)

私はすでにすべてのnvidia sdkの論文を読んでいますが、これらの機能が何をするのかまだわかりません(それらは回転を使用しますが、クーリー・テューキーのアルゴリズムのようには見えません)

できれば助けてください、または少なくとも私の問題を解決する場所を教えてください

更新: このリンクを見つけました: http://cnx.org/content/m16336/latest/#uid38 これらの関数は幅優先アルゴリズムを実行している可能性がありますか? まだ何とも言えませんが形は同じようです

0 投票する
2 に答える
697 参照

java - 個別のデータ セットを周波数ドメインに転送して戻すにはどうすればよいですか (できればロスレスで)

おおよそ70〜80kのサイズのバイト配列を取得し、それらを時間領域から周波数領域に変換したいと思います(おそらくDFTを使用)。私はwikiをフォローしており、これまでのところこのコードを取得しています。

私の知る限り、それは各周波数ウィンドウ/ビンの大きさを見つけます。次に、窓を通り抜けて、マグニチュードが最大のものを見つけます。信号を再構築するときに使用するために、その周波数にフラグを追加します。再構成された信号が元のデータ セットと一致するかどうかを確認します。次に高い周波数のウィンドウが見つからない場合は、信号を再構築するときに使用するフラグを立てます。

これは、信号を再構築するためのコードです。これは、非常に間違っていると確信しています (IDFT を実行することになっています)。

freqUsed は、信号を再構成するときに周波数ウィンドウを使用する必要があるかどうかをマークするために使用されるブール配列です。

とにかく、発生する問題は次のとおりです。

  1. すべての周波数ウィンドウが使用されても、信号は再構成されません。これは、...
  2. Math.exp() の値が大きすぎて、無限大が返されることがあります。これにより、正確な計算を取得することが難しくなります。
  3. ガイドとして wiki に従っていますが、私のデータが意味があるかどうかを判断するのは困難です。これにより、問題のテストと特定が困難になります。

問題から離れて:

私はこれにかなり慣れていないので、すべてを完全には理解していません。したがって、任意のヘルプまたは洞察をいただければ幸いです。時間を割いてすべてをお読みいただき、ありがとうございます。また、ご提供いただけるご支援に感謝いたします。私がこれを可能な限り最悪の方法で行っていると思われるとしても、どんな助けも本当に良いです. 再度、感謝します。

-

編集:

そこで、コードを次のように更新しました。

元の変換と :

逆変換用。私はまだそれが正しく機能していないことを心配していますが。単一の正弦波を保持する配列を生成しましたが、それを分解/再構築することさえできません。私が欠けているものについての洞察はありますか?

0 投票する
2 に答える
425 参照

math - データを失うことなく、時間領域から周波数領域に離散信号を転送し、元に戻すにはどうすればよいですか?

ここ数週間、私は任意のバイトのセットを受け取り、それらをシグナルとして扱うDFTを実装しようとしています。次に、それらを周波数領域に変換します。その後、それはそれらを元に戻します。元々は、元の信号を再構築するために一部のコンポーネントを使用しようとしただけでした。これが失敗したとき、私はすべてのコンポーネントを使用しようとしましたが、それでも失敗しました。

私はこれを行う方法のガイドとしてウィキペディアの方程式に従ってきました、そして私のコードはこのコードを与えられた(私の心の中で)与えられた方程式と一致するようです:

DFT:

IDFT:

誰かが私が問題が何であるかを特定するのを手伝ってもらえますか?

同じプロジェクトについての前の質問をしましたが、それはひどい言い回しであり、編集はより多くの混乱を引き起こしたかもしれません。また、その質問は答えられたかもしれませんが、私はまだ理解する必要があります。それはここで見つけることができます

0 投票する
2 に答える
9381 参照

c# - 離散フーリエ変換

私は現在、フーリエ変換アルゴリズムを書き込もうとしています。数学的な定義で説明されているように、単純なDFTアルゴリズムから始めました。

そこで、このアルゴリズムを次のコードでテストしました。

変換は正常に機能しますが、numberValuesがsamplingFrequencyの倍数(この場合:120、240、360、...)である場合に限ります。これが240個の値に対する私の結果です。

変換はうまくいきました。

280の値を計算しようとすると、次の結果が得られます。

計算値の数を変更すると、間違った結果が得られるのはなぜですか?ここでの私の問題が私のコードの問題なのか、それともDFTの数学的定義の誤解なのかはわかりません。いずれにせよ、誰かが私の問題を手伝ってくれるでしょうか?ありがとう。

0 投票する
1 に答える
3490 参照

c - OpenCVでの逆フィルター処理-DFT値へのアクセスとDFT行列の乗算

周波数領域で逆フィルタリングと疑似逆フィルタリングを実行しようとしています。

ただし、複素数を取得したため、実際には2つの行列を取得したため、DFT係数へのアクセスとDFT行列の乗算に問題があります...

基本的に逆フィルタリングは実行します

F = G / H、

ここで、Fは復元された画像、Gはぼやけた画像、Hは画像をぼやけさせたカーネルです。

疑似逆行列はHの値にアクセスする必要があります。これは、値が0に近い場合、復元の問題を回避するために値を置き換える必要があるためです。このために、次のようにHを変更する必要があります。

H(u、v)>しきい値の場合はH(u、v)= 1 / H(u、v)、それ以外の場合は=0

私はkernel1(h_1)を持っており、画像はimf(復元)とimg(ぼやけ)です。コードは次のとおりです。

最後の行にエラーがあります:--- OpenCVエラー:アサーションに失敗しました(src.depth()== dst.depth()&& src.size()== dst.size())in cvCopy、file / build /buildd/opencv-2.1.0/src/cxcore/cxcopy.cpp、行466

サイズや深さに関係があることは知っていますが、制御する方法がわかりません。とにかく、image_Re1を表示しようとしましたが、空です...

誰かがそれに光を当てることができますか?

0 投票する
4 に答える
1416 参照

c++ - 誰かがより良いロジックでこのコードを書くことができますか?

私はこの問題で2日間立ち往生しています。誰かがロジックを手伝ってくれますか?

優れたアルゴリズムの C++ プログラムに取り組んでいます。私は現在、シーケンスの FFT を計算するための Danielson-Lanczos アルゴリズムに取り組んでいます。

見つめている

ソース: http://www.eetimes.com/design/signal-processing-dsp/4017495/A-Simple-and-Efficient-FFT-Implementation-in-C--Part-I

for-loop部分全体がわずか 4 行のコード (またはそれ以上) に削減されるようにコードを論理的に記述する方法はありますか?

0 投票する
4 に答える
1089 参照

c++ - DFT用の方形波の生成

私は、振幅が0と20の間で交互になる周波数500Hzの方形波で、サンプリング周波数20kHzで200ポイントのDFTを実行する割り当てに取り組んでいます。

私はC++を使用しており、DFT方程式をコーディングする方法を理解しました。私の問題は、forループを使用してコードで方形波を表現するのに問題があることです。

私がまだ本当に混乱しているのは、この方形波のサイクルが200ポイントのサンプルにいくつあるかということです。

ありがとう

0 投票する
1 に答える
695 参照

opencv - cvMerge,DFT で変換できない

1 つのチャネル化された画像の dft を作成しようとしていますが、cvDft は複雑な値を想定しているため、元の画像をすべて 0 の別の画像とマージするようにアドバイスされたため、この最後の画像は虚数部と見なされます。

私の問題は、cvmerge 関数を使用するときに発生します。

それは私に次のエラーを与えます: cvMAt を cvArr に変換できません

誰でも私を助けることができますか?ありがとう!