問題タブ [fft]
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++ - フーリエ記述子を使用した形状境界の近似
フーリエ記述子を使用して形状境界を近似しようとしています。私はクラスでそれについて学び、いくつかの情報源でそれについて読んだので、これができることを知っています。
(x、y)座標の境界のフーリエ記述子を取得するには、次のようにします。1)(x、y)座標をx + iyの形式の複素数に変換します。2)この新しい数値のセットを1Dにフィードします。フーリエ変換3)出力はフーリエ記述子です
境界を概算するには、高周波を削除(ゼロに設定)してから、逆フーリエ変換を適用し、複素数を(x、y)座標に変換して、この新しい座標のセットから画像を再構築します。私のプロジェクトの目標は、ゼロに設定した項の数に応じて、境界をどれだけうまく近似できるかを見つけることです。
私の問題は、周波数のいずれかを0に設定すると、出力画像が非常に小さくなり、非常に奇妙なパターンとして出力されることです。
以下に例を示します。入力画像は通常の正方形です。与えられた最初の出力画像は、通常どおりすべてのフーリエ記述子を使用した画像の再構成です。境界ピクセルの数が256にサンプリングされ、出力時にドットをわざわざ接続しなかったため、境界全体が存在しないことに注意してください。また、出力は左下隅に変換されることに注意してください。これは意図的なものです。2番目の出力画像は、最初の128周波数のみを使用した場合です。
入力画像http://img19.imageshack.us/my.php?image=square0.bmp
出力画像1:すべての周波数http://img27.imageshack.us/my.php?image=square0normal.bmp
出力画像2:周波数の前半http://img23.imageshack.us/my.php?image=square0out.bmp
なぜこれが起こっているのか誰かが知っていますか?
編集:初めてここに画像を配置しますが、なぜ画像が表示されないのかわかりません。リンクは次のとおりです。
入力画像
出力
1出力2
また、これについて少し説明しているドキュメントへのリンクもあります。これは5ページの終わりから始まります。
numpy - メモリ消費を減らすために scipy/numpy の精度を下げる方法はありますか?
私の 64 ビット Debian/Lenny システム (4GByte RAM + 4GByte スワップ パーティション) では、次のことが正常に実行できます。
しかし、f が aの場合、メモリ消費は衝撃的であり、トレースバックなしでnp.complex128
は、結果に対してこれ以上のことはできません (たとえば、係数を変調してから)。f=ifftn(f)
MemoryError
RAMを追加したり、スワップパーティションを拡張したりするのではなく、scipy/numpyの「デフォルト精度」を制御し、代わりにcomplex64配列を計算させる方法はありますか?
私は後でそれを減らすことができることを知っていf=array(f,dtype=np.complex64)
ます; 私は実際に 32 ビットの精度と半分のメモリで FFT 作業を行うようにしています。
math - 離散フーリエ変換について
離散フーリエ変換に関するちょっとした質問があります。私の理解が正しければ、多項式をそのポイント値表現に変換します。多項式の n ポイントは n-1 乗になります。しかし、なぜそれを 1 の n 乗根で評価しなければならないのでしょうか? この多項式を一意に識別し、はるかに単純な他の n 個のポイントはありませんか?
fft - 高速フーリエ変換 - 多項式の乗算?
X^2+1 と X+1 などの 2 つの多項式で FFT を実行する方法がわかりません。このプロセスを段階的に実行できる人はいますか?
どうもありがとう
math - ヴァンデルモンド行列を使用した高速フーリエ変換 - 係数の評価?
多項式を評価しようとしているとしましょう:
係数の評価には高速フーリエ変換法を使用します。これで、係数を高速フーリエ変換の入力として使用して、これを行列/ベクトル形式に変更できます。
それで:
これは、1 = 1、0x^1 = 0、X^2 = 1 などの係数値を使用して行われます。
今、私は完全に混乱しています。Vandermonde matrix : Vandermonde matrix ~ Wikiを使用して、これらの値を次のマトリックスを使用して FFT 形式に評価することを意図しています。
の出力
は
これは私がよく理解していないステップです。どのようにその行列を使用して (2,0,2,0) を取得したのでしょうか?
math - 人間の聴覚のための FFT データの正規化
オーディオの典型的な FFT はこれとよく似ており、ほとんどのアクションは左端で行われます。
http://www.flight404.com/blog/images/fft.jpg
彼はそれを部分的な正弦波で乗算して底に到達させましたが、記事はその部分についてあまり具体的ではありません. また、何らかのプロパティに基づくものではなく、データセットの「十分な」修正のようにも見えます。人間の聴覚はより高い周波数に適していることを理解しています。したがって、ほとんどの音楽は低音が増幅され、高音は減衰されているため、どちらも比較的同じ強さで聞こえます。
私の質問は、この標準的な低下を補うために FFT にどのような変更を加える必要があるかということです。
編集 ::
http://en.wikipedia.org/wiki/Equal-loudness_contour
私はこの記事に出くわしました。それが向かうべき方向かもしれないと思いますが、それでも対策が必要な FFT の特性があるかもしれません。
wav - 別のWAV内でWAVサンプルの発生を見つけますか?
正確なサンプルがwavのどこかに存在することがわかっている場合(ただし、他の音と混合される可能性がある場合)、FFTを使用して長いwav内の小さなwavサンプルの発生を見つけることは可能ですか?
編集
(2つの応答を受け取った後):より大きなWAVに含めることができるすべての既知のサウンドのライブラリがあり、そのWAV内でそれぞれの発生を検索したい場合はどうなりますか?言い換えれば、私は大きなwavにミックスできるすべての可能な音を知っていて、それらの発生を見つけたいですか?
c - 配列のインプレース ビット反転シャッフル
FFT 関数の場合、配列内の要素をビット反転した方法で並べ替えまたはシャッフルする必要があります。サイズが 2 のべき乗のほとんどの FFT 関数は、ビット反転された方法でデータを期待または返すため、これは FFT の一般的なタスクです。
たとえば、配列に 256 個の要素があると仮定すると、各要素をビット反転パターンと交換したいとします。以下に 2 つの例 (バイナリ) を示します。
等々。
これを迅速かつより重要な方法で実行する方法はありますか?
私はすでにこのスワップを行う関数を持っています。1つ書くのは難しくありません。これは DSP で非常に一般的な操作であるため、非常に素朴なループよりも賢い方法があると感じています。
問題の言語は C ですが、どの言語でもかまいません。
java - Javaでのフーリエ変換を使用したオーディオデータの処理
オーディオデータを処理しようとしています。私はJavaを使用しています。オーディオデータを配列に抽出しました。ここで、N個のデータサンプルを離散フーリエ変換(またはより効率的な高速フーリエ変換)を計算する関数に渡す必要があります。ドキュメントを読みましたが、ますます混乱しています。私が計算しようとしているのは、マグニチュードスペクトル(| X(k)|)です。誰か助けてもらえますか?ありがとう