タグ

FFTに関するmnruのブックマーク (21)

  • http://ha6.seikyou.ne.jp/home/yamanose/haskell/home.html

    目次 THE HITCHHIKER'S GUIDE TO THE HASKELL 「HASKELL の歩き方」 はじめに 式、評価、評価器。 数の型。 -> 整数の演算子 一覧 RUNHUGS インタープリター 関数の型 文字、文字列 関数とは ユーザー定義型 モジュール 型でつくるデータ構造 再帰 リスト -> リスト内 包表記 ファイルシステムのシミュレーション 高階関数 -> カ リー化、部分適用、セクション、関数合成 -> ラムダ式 ガード節 スコープ(名前空間) ファイルを読む 標準モジュール タプル 大小の比較 クラス、インスタンス モジュール2 -> ADT 遅延評価 システムとのやりとり do記法、>>, >>= ジェネレーター、ガード Maybe ファイルハンドラー 演算子の独自定義 -> 結合性 例 : モー

  • FFT

    (付録5) フーリエ変換で遊ぶ [ディジタル信号処理] Alaska Satellite FacilityのサイトにアップされているSTP(SAR Training Proccesor)を見れば分かるように、SAR(合成開口レーダ)データの処理では、高速フーリエ変換が多用されている。フーリエ変換は、ディジタル信号処理や画像処理で必ず扱われる項目となっているが、視覚的に理解するのはなかなか難しい。 信州大学の井澤先生が、Java Appletを使って分かりやすい説明をしてくれている。左図は正弦波のサンプリングの例を表示している。中段は、サンプリングした信号を表わしている。離散化されたサインカーブとなっている。上段は、この信号の連続スペクトルを実部と虚部に分けて表示している。正弦波のボタンをクリックすると、信号に位相がシフトし、それに伴い、スペクトルも変化するのが分かる。 高速フーリエ変換で

    mnru
    mnru 2012/02/05
  • Data Analysis

    mnru
    mnru 2012/02/05
  • お勧め「科学技術演算ライブラリ」? DCTやIDCT、FFT、FIR、IIR等一般的な数値演算を集めた「科学技術演算 ライブラリ」みたいなのもので何がお勧めでしょうか?…

    お勧め「科学技術演算ライブラリ」? DCTやIDCT、FFT、FIR、IIR等一般的な数値演算を集めた「科学技術演算 ライブラリ」みたいなのもので何がお勧めでしょうか?ANSI-Cで書かれ たものがベターです。 私は、LSIの設計の仕事をしていますが、現在、ANSI-Cで書かれたアルゴ リズムを、ハードウェアに変換するツール(業界では動作合成ツールと 呼ばれますが)の評価をしています。そのベンチマークの題材を探して いて、冒頭の質問した次第です。 来、社内の既存のソースコードでベンチマークするのがベストなんで すが、サポートの為に、ツールのベンダー側にソースを出さざるを得な い状況があるので、秘密保持の観点から、社内のソースコードを使わ ず、オープンなもので、ベンチマーキングしようと考えています。 以下のようなページを見てはいますが... http://lss.eternity.ne.j

    mnru
    mnru 2012/02/05
  • ビット反転操作

    問題:以下の説明を参考にして高速フーリエ変換(FFT)を計算する関数を作成し、要素数100の0から1の値を持つdouble型の乱数配列のフーリエ変換を求めよ。 高速フーリエ変換(Fast Fourier Transform, FFT)は、離散フーリエ変換(Discrete Fourier Transform)を高速で実行するアルゴリズムである。FFTのアルゴリズムは幾つかあるが、ここでは要素数Nが2のn乗(n = 1, 2, …)の場合に限って、周波数間引き形FFTのプログラムについて説明する。 1.離散フーリエ変換 N個の複素数を要素とする数列及びについて、次の変換をからの離散フーリエ変換という。 、 とすると、となるから、この式は、 、 と書くことができる。は、複素平面上の半径1の円周をN分割した点として表される。したがって、、である。 2.N = 8の場合の離散フーリエ変換 N =

    mnru
    mnru 2012/02/01
  • Redirecting…

    mnru
    mnru 2012/02/01
  • Fast Fourier transform

    mnru
    mnru 2012/02/01
  • FFTによる乗算 - inamori’s diary

    世の中にはすごい人がいて、私が七転八倒しながらProject Eulerの問題を解いている一方、易々と華麗に解いている人もいる。 さて、Project Euler 258は、以前書いたように大きな整数の掛け算の速度が問題になる。よく知られているようにFFTを用いると高速に計算できる(理屈は忘れた)。しかし、こちらにもあるように、少し実装を知れば、整数の計算に実数を使うのはどうなのよ、という話になる。 そのリンク先に書いてあったことはさっぱり分からなかったが、確かどこかにFFTが使える限界が書いてあったなあと思って探したのがこれ。 FFT多倍長乗算器のVLSI 設計 http://almond.cs.uec.ac.jp/papers/pdf/2005/syunji-JSIAM9.pdf これによると10進数100万桁以上までOKらしい。今回の計算は8万桁くらいなので、PythonがFFTを使

    FFTによる乗算 - inamori’s diary
    mnru
    mnru 2012/01/31
  • fft

    mnru
    mnru 2012/01/31
  • (λx.xx)(λx.xx)な人生 |高速フーリエ変換FFT

    DFTじゃ流石に遅いのでFFTを実装してみました. といっても定義そのままなので実用に耐えられるものではないでしょう. アルゴリズムは基数2の時間間引きFFT. データ長が2の冪乗以外の場合はパターンマッチングが失敗します. import Complex separate [] = ([],[]) separate (x1:x2:xs) = (x1:odds, x2:evens) where (odds, evens) = separate xs fft [] = [] fft [x] = [x] fft dat = zipWith3 (\x0 x1 w -> x0 + w*x1) xs0 xs1 wk ++ zipWith3 (\x0 x1 w -> x0 - w*x1) xs0 xs1 wk where xs0 = fft odds xs1 = fft evens (odds, eve

    mnru
    mnru 2012/01/31
  • Tech Tips

    まずは、普通のO(n^2)のDFTを行列表現で書いてみます。このとき、eのべき乗のところを式で書くとイメージが大変なので、極座標系の矢印で書いてあげると分かりやすいです。 この式をじっくり見ると、「サルでも分かるFFT(2)」で紹介したk成分と(N-k)成分の対称性が見えます。Fourier visualizerがはき出した極座標系の周波数スペクトラムとの対比がよく分かると思います。

    mnru
    mnru 2012/01/31
  • CBRC – Just another WordPress site

    コンテンツへスキップ Computational Biology Research Consortium CBRC.JP

    mnru
    mnru 2012/01/31
  • 電子工作のためのフーリエ変換・FFT入門

    インデックス はじめに 前フリ フーリエ級数(実数) 収束定理 ejθについて フーリエ級数(複素数) フーリエ変換 離散フーリエ変換(DFT) 高速フーリエ変換(FFT) Pythonでグラフ描画 Javaでグラフ描画 はじめに 今回は工作ノウハウに絡んだ,理論っぽい話です。 オーディオ用スペクトル・アナライザ では,dsPICが「フーリエ変換」という演算をしています。この計算をすると,マイクから入力される音の信号を周波数ごとに分解できます。LEDで表示しているのは,その計算結果なのですが。。。 上の式がフーリエ変換と呼ばれている計算です。なんでコレで音のスペクトルが分かるの? コンピュータ(dsPICとか)で積分ってどーやるの? あと,FFTって何なの? ・・・などなど,そんな話を書いていきたいと思います。 ちょっと数学っぽいですが,高校数学で全部解説するように頑張ります。 前フリ フ

    mnru
    mnru 2012/01/31
  • 高速フーリエ変換(FFT)の解説。理論編 - プログラムdeタマゴ

    私はあまり画像を波長空間でフィルタリングとか言うことをやらないので、実のところ、今までFFTどころか離散フーリエ変換(DFT)すらしたこと無かった。 というわけで、ちょっと調べてみたのでまとめてみようと思う。かなり長い記事になるよ。 [原理解説] 離散フーリエ変換の式(1)について考察をおこなう。 (1) 式(1)において、特に となる場合を考える。なお、nに関しては0を含んでも良い。(Nが全く見た目が変化しなかったので、英語で書いた。要するに自然数) このとき、 を満たす適当な整数j,k,l,mを定義すると、u,xは以下の様にかける (2) (3) (2),(3)を用いて式(1)を書き換えると、 (4) となる。 式(4)を展開し、整理すると、 (5) ここで、式(5)の大括弧でくくった部分は、mとkの関数と見なせるので (6) を用いると、結局式(1)は (7) (8) (9) という

    高速フーリエ変換(FFT)の解説。理論編 - プログラムdeタマゴ
    mnru
    mnru 2012/01/31
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • フーリエ変換の実際

    フーリエ変換については、高速アルゴリズムがソースコードの形で、あちこちに公開されています。ただ使い方(パラメータの与え方や結果の見方)の敷居が高いことも単純にあると思うので、その辺を簡単に説明したいと思います。 のように呼ばれるとします。Reは信号の実数部を格納するための配列、Imは信号の虚数部を格納するための配列、sizeはReとImのデータ数です。実数部、虚数部というのは、フーリエ変換後の周波数領域で位相(sin波の進み遅れ)を含めた波の状態を表すために複素数を用いることから必要になります。 例えば、処理したい信号が256個(高速アルゴリズムはデータ個数に2のべき乗を要求するので単純に合わせました)のデータだとすると、まずRe(実数部)に256個の信号を格納します。そしてIm(虚数部)には256個の零を格納します(時間領域の波形や空間領域の画像は実数データなので、複素数データに格納する

    mnru
    mnru 2012/01/31
  • Ruby で FFT (高速フーリエ変換) を書いてみた - まめめも

    ref: 【ニコニコ動画】ミクをPCの再生音に合わせて自動で踊らせてみた ↑に触発されて波の処理をしたくなったので、Ruby で FFT (高速フーリエ変換) を書いてみました。 FFT とは、波の形を見て周波数とかを見抜く魔法のことです。数式とか考えたくないので、とにかく Ruby で書いてみました *1 。 def fft(a) n = a.size return a if n == 1 w = Complex.polar(1, -2 * Math::PI / n) a1 = fft((0 .. n / 2 - 1).map {|i| a[i] + a[i + n / 2] }) a2 = fft((0 .. n / 2 - 1).map {|i| (a[i] - a[i + n / 2]) * (w ** i) }) a1.zip(a2).flatten end これだけです。短いで

    Ruby で FFT (高速フーリエ変換) を書いてみた - まめめも
    mnru
    mnru 2012/01/30
  • Scalaでフーリエ変換(1) - なんじゃくにっき

    何故かフーリエ変換したくなったので、Scalaで書いてみた。 フーリエ変換そのものについてはWikipediaでもごらん下され。 高速じゃない離散フーリエ変換。 ワンライナーで書こうと思えば書けるね、これ。 ひどく読みにくくなりそうだけど。 def ft(data: IndexedSeq[Double]): (IndexedSeq[Double], IndexedSeq[Double]) = { val n = data.length // 実部 val realPart = (for (i <- 0 to n-1) yield (for (j <- 0 to n-1) yield (data(j) * Math.cos(2.0 * Math.Pi * i * j / n) - data(j) * Math.sin(2.0 * Math.Pi * i * j / n)))sum) // 虚

    Scalaでフーリエ変換(1) - なんじゃくにっき
    mnru
    mnru 2012/01/30
  • FFTW Home Page

    Introduction FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for most applications. The latest official releas

    mnru
    mnru 2012/01/30
  • 高速フーリエ変換 (FFT) :: フーリエ変換 (MATLAB®)

    mnru
    mnru 2012/01/30