ステレオ素材をモノにする場合、ヒルベルト変換というもので片チャンの位相を90度ずらしてやるとバランスが崩れず良いらしいという事で、vDSPのFFTを使ってやってみました。 変換したいオーディオデータを…
ステレオ素材をモノにする場合、ヒルベルト変換というもので片チャンの位相を90度ずらしてやるとバランスが崩れず良いらしいという事で、vDSPのFFTを使ってやってみました。 変換したいオーディオデータを…
その4までで、一応窓関数も使った高速フーリエ変換が実現できました。しかし実際にオーディオのリアルタイム解析などで使おうとすると、このままでは使いにくいし効率も悪いので、後々使いやすい形に実装しなおします。 “vDSPを使う(高速フーリエ変換編 その5)” の続きを読む 簡単な高速フーリエ変換ができるようになりましたが、なにも考えずに信号をフーリエ変換すると周波数特性がきれいにでない場合があります。これは信号に含まれる成分の波長がフーリエ変換する長さに会わなかった場合に発生するのですが、「窓」と呼ばれるものを使うとこの問題を低減できます。「窓」を作る機能もvDSPには用意されているので使ってみます。 “vDSPを使う(高速フーリエ変換編 その4)” の続きを読む
去年のクリスマスに公開したカラオケ機能つき Quine の仕組みについて。 ref: 声の高さで操作するゲームを作ってみた で解説されている内容と同一です。おわり。 で終わるのもつまらないので、簡単に解説します。でも思いだしながら書いているので嘘書いてたらごめんなさい。動画には図とかあるので、やはりそっち見た方がいいと思うけど。 「ピッチ検出なんて FFT するだけでしょ」と思ってる人は素人で、音叉みたいにきれいな正弦波を測りたいならともかく、声や楽器の音など倍音を含んだ音では誤判定が起きまくるようです。偉そうなこと言ってる私も素人です。そこで、Wikipedia の Pitch detection algorithm で挙げられている、MPM アルゴリズムを調べて実装してみました。以下の論文。 ref: P. McLeod and G. Wyvill. A smarter way to
ホームページをつくって8年以上になりました。当時一番簡単にホームページを作ることができるソフトは何かを探索し、Quick Homepage Makerを選びました。しかし、開発元の北研がQHMの開発を終了するとの話から、この度、WordPressに移行することにしました。 基本的には、以前の投稿内容をWordPressの固定ページと投稿にコピーしましたが、デジタル制御のページのようにwordの数式ツールで数式を多数挿入したものは数式を一つ一つ画像として貼り付けるのが面倒なのでpdfに変換して掲載しました。数式の小さな添え字が以前より見え易くなるメリットもあります。現在なら計算に使用したソフトをMatlabかPythonに変える方がよいのですが、それは今後の課題です。 (2017年4月19日記) はじめまして 定年から1年経ち、やっとホームページ開設にこぎ着けました。 私の情報発信が多少とも
フーリエ変換については、高速アルゴリズムがソースコードの形で、あちこちに公開されています。ただ使い方(パラメータの与え方や結果の見方)の敷居が高いことも単純にあると思うので、その辺を簡単に説明したいと思います。 のように呼ばれるとします。Reは信号の実数部を格納するための配列、Imは信号の虚数部を格納するための配列、sizeはReとImのデータ数です。実数部、虚数部というのは、フーリエ変換後の周波数領域で位相(sin波の進み遅れ)を含めた波の状態を表すために複素数を用いることから必要になります。 例えば、処理したい信号が256個(高速アルゴリズムはデータ個数に2のべき乗を要求するので単純に合わせました)のデータだとすると、まずRe(実数部)に256個の信号を格納します。そしてIm(虚数部)には256個の零を格納します(時間領域の波形や空間領域の画像は実数データなので、複素数データに格納する
多倍長演算のプログラムを書くために学習した高速フーリエ変換のメモ。・・・ところでfftでググるとファイナルファンタジータクティクスが出てくるあたり泣ける。 高速フーリエ変換は離散フーリエ変換を高速に行うアルゴリズムで、素直に実装すると再帰的な処理になる。普通は実用の観点から繰り返しのコードにする。その際はビットリバースと呼ばれる操作をして要素を交換した配列を一度に得る。正直何やってるか分からない。多分、インデックス値のビット列を反転させた値をインデックス値とした配列の要素と交換してる。複素数演算をするが、c++ならcomplex STLを使える(complexをインクルード)。stl使うだけで、コードの見通しがかなり改善される。 以下を参考にした。 http://www.na.cse.nagoya-u.ac.jp/~reiji/lect/alg99/sec11-3.html http://
これは私が作成したCまたはFortranの数値計算プログラムの中で実用に耐えうるものを集めたものです. 内容は今のところ数値積分,FFT,特殊関数についてです. 意見,バグ報告などは私までお願いします. Package List 数値積分 - 二重指数関数型(DE)公式 : 万能型数値積分公式です.広義積分が計算できます. DE公式パッケージFAQ/参考文献 数値積分 - クレーンショー・カーチス則 : 性質のよい関数専用の積分公式です. 積分の端点を含む積分区間で高階微分不可能な関数は計算できません. 性能はガウスの積分公式による自動積分と同程度です. FFT (高速 フーリエ / コサイン / サイン 変換) : 一次元,二次元,三次元の離散フーリエ変換 (DFT, DCT, DST など) を高速に計算します. このライブラリは,SETI@homeに使われています. 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 これだけです。短いで
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く