タグ

FFTに関するshigiryouのブックマーク (19)

  • [Swift] 爆速計算ライブラリ Surge を使う | DevelopersIO

    Accelerate.Framework + Swift Accelerate フレームワークは線形代数の計算を始めとし、音声、信号処理に応用の効くフーリエ変換や画像処理などでハイパフォーマンスな計算処理を提供します。 このフレームワーク内では OS X / iPhone で用いられている Intel, ARM などの CPUSIMD 命令を用いて計算が最適化されています。 Accelerate フレームワーク自体は iOS のフレームワークのなかでも比較的低レイヤな位置づけであるため、フレームワークを直接叩くような実装を開発者が行うことはまれです。 とはいえ、重量級の計算をアプリケーションのロジック部で行う際に、SIMD による最適化の恩恵が得られるにも関わらず、それを行わないのは宝の持ち腐れと言えます。 Surge はこの低レイヤな位置づけにある Accelerate フレームワ

    [Swift] 爆速計算ライブラリ Surge を使う | DevelopersIO
  • c++で高速フーリエ変換, fft - yattのブログ

    多倍長演算のプログラムを書くために学習した高速フーリエ変換のメモ。・・・ところでfftでググるとファイナルファンタジータクティクスが出てくるあたり泣ける。 高速フーリエ変換は離散フーリエ変換を高速に行うアルゴリズムで、素直に実装すると再帰的な処理になる。普通は実用の観点から繰り返しのコードにする。その際はビットリバースと呼ばれる操作をして要素を交換した配列を一度に得る。正直何やってるか分からない。多分、インデックス値のビット列を反転させた値をインデックス値とした配列の要素と交換してる。複素数演算をするが、c++ならcomplex STLを使える(complexをインクルード)。stl使うだけで、コードの見通しがかなり改善される。 以下を参考にした。 http://www.na.cse.nagoya-u.ac.jp/~reiji/lect/alg99/sec11-3.html http://

    c++で高速フーリエ変換, fft - yattのブログ
  • FFT

    任意の数のサンプルを使用する高速フーリエ変換です。 構文 void FFT( XVECTOR *pReal, XVECTOR *pImaginary, XVECTOR *pUnityTable, UINT32 uLength, UINT32 uCount = 1) パラメーター pReal [in, out] FFT の実数成分です。少なくとも (uLength × uCount) ÷ 4 の値と同じ数の要素が必要です。 pImaginary [in, out] FFT の虚数成分です。少なくとも (uLength × uCount) ÷ 4 の値と同じ数の要素が必要です。 pUnityTable [in] FFT で使用する必要のある統一テーブルです。少なくとも uLength × uCount の値と同じ数の XVECTOR が必要です。詳細については、「FFTInitializeUn

    FFT
  • 研究室紹介(石田 弘樹)

  • 技術計算用Cプログラム ソース(科学技術計算)

    ソース群は、「C言語による科学技術計算サブルーチンライブラリ」(注1)をベースに、各分類の中にいくつかの関数を付け加えたものです。 アルゴリズムには大きな変更は加えていませんが、関数の型や、プロトタイプ宣言等は、かなりの部分を書き換えています。(オリジナル版は、全てのルーチンが int 型であり、ユーザプログラムでの宣言を不必要としていましたが、コーディング効率の向上と、コーディング品質向上のための関数プロトタイプ宣言の必須化の動向を受け変更しました。変更に伴い、ヘッダファイル "sslib.h" を新たに準備しました。) また、説明文や使用例に関してもより充実させています。 プログラム群は、下記2~18のプログラムを個別にコンパイルした後、1個のライブラリ化することを前提に作成されています。 各使用例は、そのライブラリを使用した例です。 但し、各プログラム群は、独立性が高い為、ほと

  • 【Java】画像をフーリエ変換したい!【FFT】 - Qiita

    概要 ふと、画像をフーリエ変換するソフトをJavaで作成することになりました。 ただ、これがなかなか面倒だったので、試行錯誤の記録をメモしておきます。 FFTライブラリについて フーリエ変換をプログラムで利用する際は通常、既存のFFTライブラリに頼ることになります。カリカリにチューニングされているものとして有名なのは、FFTWや大浦版FFTやOTFFTなどですね。今回はJavaで組むと決めていたので、このうちJava移植版があった大浦版FFTを使用することにしました。 ところでこの移植版、用意されている関数がrdftしか無いんですね。rdftとは、「実離散フーリエ変換」という意味で、入力が(2^n個の)実数だけ受け付けますよということです。どうせ入力データは画像(実数データ)なのでその点は別にいいのですが、問題はこの関数の挙動がよく分からないことです。 ということで、適当にテストしてみまし

    【Java】画像をフーリエ変換したい!【FFT】 - Qiita
  • 高速フーリエ変換(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タマゴ
  • 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 (高速フーリエ変換) を書いてみた - まめめも
  • Scalaで高速フーリエ変換の簡易実装 - Qiita

    高速フーリエ変換のアルゴリズムについては、とりあえずWikipedia見ておけばいいと思います。 高速フーリエ変換 - Wikipedia さくっと要素演算できるVectorがあると便利なので、数値処理ライブラリbreezeのDenseVectorを使ってみます。 scalanlp breeze DenseVector - breeze.linalg.DenseVector object FFT extends App { import breeze.linalg.DenseVector import breeze.math.Complex def fft(f: DenseVector[Complex]): DenseVector[Complex] = { require( (f.size == 0) || math.pow(2, (math.log(f.size) / math.log(

    Scalaで高速フーリエ変換の簡易実装 - Qiita
  • GitHub - mjibson/go-dsp: Digital Signal Processing for Go

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - mjibson/go-dsp: Digital Signal Processing for Go
  • GOSSP - Go言語で音声信号処理 | LESS IS MORE

    C++からGoへ みなさん、C++で信号処理のアルゴリズムを書くのはつらいと思ったことはありませんか?C++で書くと速いのはいいけれど、いかんせん書くのが大変、コンパイルエラーは読みづらい、はたまたライブラリをビルドしようとしたら依存関係が上手く解決できず……そんな覚えはないでしょうか?謎のコンパイルエラーに悩みたくない、ガーベジコレクションほしい、Pythonのようにさくっと書きたい、型推論もほしい、でも動作は速い方がいい、そう思ったことはないでしょうか。 そこでGoです。もちろん、そういった思いに完全に答えてくれるわけではありませんが、厳しいパフォーマンスを要求される場合でなければ、Goの方が良い場合も多いと僕は思っています。 とはいえ、まだ比較的新しい言語のため、ライブラリは少なく信号処理を始めるのも大変です。というわけで、僕がC++をやめてGoに移行したことを思い出し、Goでの信号

    GOSSP - Go言語で音声信号処理 | LESS IS MORE
  • SwiftでAccelerateを使ってFFTを行う - KittenEarの備忘録

    環境 Xcode 6.3 準備 import Accelerate ソースコード 参考にしたサイト Using Fourier Transforms vDSP Examples [vDSP][信号処理]オーディオ・音声分析への道5.1 Swiftで高速フーリエ変換 FFT - Qiita Objective-C - iOSで高速フーリエ変換を使う - Qiita 高速フーリエ変換 | なんてこったいブログ liscio/SMUGMath-Swift · GitHub

    SwiftでAccelerateを使ってFFTを行う - KittenEarの備忘録
  • 高速フーリエ変換(FFT)

    高速フーリエ変換(FFT) 信州大学工学部 井澤裕司 1. 高速フーリエ変換とは ここでは、高速フーリエ変換について解説します。 高速フーリエ変換(Fast Fourier Transform; FFT)は、離散フーリエ変換の対称性に着目して、 その演算量を減らし高速に変換を行う手法であり、1965年、CooleyとTukeyにより発表されました。 周期 N の離散フーリエ変換(DFT)では、複素数の乗算を N2 回行う必要があります。 高速フーリエ変換では、その乗算回数を N・log2N /2 回に減らすことができます。 なお、乗算では加算を複数回行うので、加算より複雑な処理になります。 例えばNが2のべき乗、すなわち N=2m のとき、その比率を求めると、 [FFT] / [DFT] = m・2m-1/22m = m/2m+1 となり、m(すなわちN)が大きいほど、その効果がはっきり現

  • 高速フーリエ変換(FFT)をおじさんもC++で作ってみたよ - nursの日記

    マンガでわかるフーリエ解析 作者:渋谷道雄,晴瀬ひろきオーム社Amazon やあ子どもたち。数値配列を日常的に扱っている俺達プログラマーにとって、フーリエ変換がいかに簡単かというイメージを忘れないように以前日記を書きました。その中で、DFT(離散フーリエ変換)計算の実践実装例も見ました。 そして今日はその高速版、FastFourierTransform(高速フーリエ変換)(以下、FFT)の実装及び原理を紹介します。(実際に動くC++のプログラムソースコードは記事の一番最後の方にあります。) FFTは20世紀の10大アルゴリズムの中にも数えられる、とても有名なアルゴリズムでもあります。とはいえその歴史は古く、FFTやDFTの当の起源というところまで行くと、あの大数学者ガウス(1777年生まれ)が既に気付いていた?などという噂もあるらしく、それ自体をテーマにした研究論文が出版されたりしてい

    高速フーリエ変換(FFT)をおじさんもC++で作ってみたよ - nursの日記
  • Visual Studio 2010 C# を使ってFFTを行う

    森下功啓製作所 ONLINE Microsoft社が無料で配布しているVisual Studio 2010 ExpressのVisual C#を使ってFFT演算クラスについての備忘録です。 FFT(高速フーリエ変換)をC#で行うためのクラスを作ってみました。 どうぞ使ってみて下さい。 設計思想的には、「簡単FFTとその結果の利用」を目指しています。 「サンプリング周波数の違いで結果の配列をどこまで取ったらどうのこうの~~・・・」 などと考えなくて済むようにしています。 また、帯域を指定してのパワーの取得やフィルタ操作が簡単にできるように工夫したつもりです。 プログラムパッケージのダウンロード

  • c#でマイク音声をFFTする - wildpieの日記

    FFT C#でFFT(Fast Fourier Transform)するのに便利なライブラリーを探してみると、Math.NETというのが良さそうでした。今回はこれを使って音声信号をFFTしてみます。 音声入力 処理の対象物をどうしようかと悩んだんですが、いつも画像ばかり触っているので、たまには次元減らして音声処理をやってみます。ここで悩むのがどうやって音声を入力するかです。画像ならSystem.Drawing.Image.FromFile()とかcv::imread()が使えるんですが、音声はどうするんでしょう。 調べてみるとXNAか.NET Voice Recorderを使えとStack over flowに書いてあったのでとりあえず後者を使います。 .NET Voice RecorderはNAudioを使っているのでNugetでNAudioをインストールします。 NAudioで音声取得

    c#でマイク音声をFFTする - wildpieの日記
  • 自作ソフト紹介

  • uzusionet.com

    uzusionet.com 2024 著作権. 不許複製 プライバシーポリシー

    uzusionet.com
  • 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

  • 1