フーリエ変換について教えてください
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNG助言はできると思います。
0003デフォルトの名無しさん
NGNG実は日本の時田重盛であると聞いたのですが、本当ですか?
0004デフォルトの名無しさん
NGNG良質スレになるか、見ものだな。
00051
NGNGとりあえずプログラムには使えるのですが理論はほとんど理解して
ません。理論をお願いします
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG>>7 が理解できないようなら、勉強しても無駄です。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG>>7が理解できないようなら,いきなりフーリエ変換を勉強するのではなく,
フーリエ級数からはじめてください.
0011デフォルトの名無しさん
NGNGヒッポファミリークラブ、フーリエの冒険
ぐらいでいいと思う。
http://www.lexhippo.gr.jp/sh.html
0012偽ASIMO
NGNGこの本は分かりやすくていいよね
大学の時に買ったが優しく解き明かしている
パッと見た目は子供向けみたいだが
0013デフォルトの名無しさん
NGNGなんか面白そうだな。
0014not 1
NGNGフーリエ級数の式は知っててもこの書き方では意味がわかりません。
Texかなにかのマクロで書いてるのでしょうか?
それとも私のブラウザが対応してないだけ??
>>5
プログラムで使うってDFT(離散フーリエ変換)のこと?
それともFFTから?もっと戻って数学的なフーリエ変換から?
0015デフォルトの名無しさん
NGNGf(x)=∫exp(ikx)g(k)dk/オッパイ2個
0016デフォルトの名無しさん
NGNGプログラムで扱えるのは数値的にはDFTだけ
数式処理なら別だけどね
FFTについては素数スレにソースがあるけどFFT自体は簡単だよ
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG信号処理全般
0019デフォルトの名無しさん
NGNGCD
0020デフォルトの名無しさん
NGNGフーリエ変換自体は理論的なもんじゃないのかな
0021デフォルトの名無しさん
NGNGラプラス変換では今ひとつスッキリしなかったアナタにもお勧めよ
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG地震屋さん
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG画像・音声の不可逆圧縮。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG関数積=たたみ込み がフーリエ変換すると値積になる。これに尽きるんじゃない?
最速の素数判定アルゴリズム
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=993457354
で普通の掛算に比べてFFTを使うとどれだけ速くなるか判るだろう
0031デフォルト
NGNGhttp://aserve.procen.net/nippyo/books/bookinfo.asp?No=1742
0032にゃ
NGNG掛け算が足し算になるlogみたいなもんと考えていいか?
0033デフォルトの名無しさん
NGNGそうなんですか。じゃあたくさんの計算に使うといいんですか?
0034デフォルトの名無しさん
NGNGたたみ込みが値積になる為、たたみ込み的演算をFFTして
値積で処理して逆FFTする方が演算コストが低くなるのだ。
サウンドや画像関係で次数の高いフィルターを実現する事に
πや素数の計算で長多桁の積(これはたたみ込みの形になる)類に
利用されている
たたみ込みというのは、いわゆる線形フィルターは全てたたみ込み
演算に変形出来るから、この特徴は非常に応用範囲が広い
その他に、周波数という指数に分解出来るというメリットがある
同じ周波数分解の仲間であるコサイン変換もDFTから計算した方が
FFTが使える分高速になる
直接的には、周波数分析表示(スペアナ)とかに使われる
例えばステレオ12素子スペアナを フィルターで実現するより
FFTを使った方が数倍高速、しかも分解能がいい
(FFT使わなくてもマトモに計算しなけりゃいいんだけどさ)
0035デフォルトの名無しさん
NGNGちょっと前だけど、秋葉原のブックタワーの 3Fの数学のところにあったよ。
0036デフォルトの名無しさん
NGNG値積
ってなんですか?
0037デフォルトの名無しさん
NGNG結局使えてなんぼだろ やり直しの工業数学でやり直せ
0038デフォルトの名無しさん
NGNG003934
NGNGたたみ込み積に対して 値同士の積という事でしょ?
行列積やベクトル積はたたみ込み型の積
0040デフォルトの名無しさん
NGNGhttp://www.cqpub.co.jp/hanbai/books/33181.htm
信号解析のための数学
http://www.morikita.co.jp/mokuji/7852.html
0041デフォルトの名無しさん
NGNGなつかしいなあ。。ヒッポ本。
おれ、物理学科卒なのに、量子力学の冒険読んで
初めてリョウリキが少しわかったよ。
フーリエもいいらしいね。
ヒッポのサイトってある?
0042デフォルトの名無しさん
NGNGウツだし
004336
NGNGありがとう。
つまり、
畳み込み=各成分(配列)の掛け算の足し合わせ
値積 = ただの掛け算
ってかんじでいいですか?
情報系専攻じゃないので。やってる数学用語とか違うのかな。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGc[x]=Σ a[x-i]*b[i]
みたいな感じじゃないのかな?
0046デフォルトの名無しさん
NGNG∞
Σ{ A[n]*sin( 2πn )+B[n]*cos( 2πn ) }
n
で表す事ができる。以上。
0047デフォルトの名無しさん
NGNGぜんぜん違うじゃん(w
004823区
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGは
∞
Σ A[n]*x^n
n=0
で表現出来るか?
0051デフォルトの名無しさん
NGNGΣA[n]*e^(s*n)
で表す事ができる。以上。
0052デフォルトの名無しさん
NGNGC+Σ { A[n]*Sin(2πn)+B[n]+Cos(2πn) }
n
じゃなかったっけ?
0053デフォルトの名無しさん
NGNG全ての信号は
2πk/nの周期を持つ正弦波と余弦波の和で表す事ができる(kは任意の定数)
x(t) : 時間tにおける信号
∞
x(t) = C+Σ { A[n] sin (2πkt/n) + B[n] cos (2πkt/n) }
n=1
Cは直流成分
じゃなかったっけ
0054デフォルトの名無しさん
NGNGその式は kが変数で n が定数だろう。
そして周期 n の周期関数はという条件がつくのでは?
0055デフォルトの名無しさん
NGNG時間Tだけ遅延する演算を D(-T)と表現する。
0,1,2,3,4 てな数列にD(-1)をかけると
1,2,3 と一つずれる訳だ。
例えば差分は D[1]-D[0] と表現出来る
遅延するという性格から D(A+B)=D(A)*D(B)だろう。
つまり、D(-T)は指数関数の延長上にありそうな気配が漂う
だから D(t)=e^s*t と表現してみよう。
sは今はどんな数か判らないけどいいじゃないか。
また、時間Tの所に大きさ1の信号がある状態もD(T)と表現しよう
この表現を使えば全ての 離散信号を ΣA[n]*D(n) と表現出来るぞ
0056デフォルトの名無しさん
NGNGs∈{Complex} なら、それはラプラス変換では?
s=-j*t, t∈{Real}ならそれだとDCレベルを含む信号は表せない。
0057デフォルトの名無しさん
NGNGそういやD(t) = e^s*t と表現してみようって話があったな
あれ? これってフーリエ変換ともソックリ?
ソックリって事は同じ規則で動くって事だぞ!
0058デフォルトの名無しさん
NGNGΣか∫かは表現する関数が離散か連続かではなくて、
周期的か否かに依ると思われ。
0059デフォルトの名無しさん
NGNG上のsやらtやら信号やらがが2次元以上のベクトルのときにも
OKなの?
SSE instruction使うと早く計算できる?
# プログラマ板向けに軌道修正を謀る。
0060デフォルトの名無しさん
NGNGここはラプラス変換(ミクシンスキースタイルの演算子法?)を導いて
そこからフーリエ変換への類似へ言及しようとしてるんでしょ?
>>59
FFTはスタイルだから 原理的には離散的な処理には応用可能
SSE については、複素数積の段階で使おうと思えば使える
x'=c*x-s*y
y'=c*y+s*x
0061デフォルトの名無しさん
NGNGどこに話を持っていこうとしてるか見えてなかった。
ラプラス変換とフーリエ変換の類似って。
物理卒だからラプラス変換はフーリエ変換の単なる応用の一つ
って感じだな。厨房的に表すと Fourie>>Laplace。
>>55みたいに空間(あるいは時間)の並進対称性から、
指数関数を使いたくなる発想は一緒だけど、
どうせなら正規直行関数系で表現したくなる。
けど、現実の問題は境界条件とかつくから
ラプラスがはまる場合が多いんだよね。
フーリエ変換は周期的、または対象に比べてだだっ広い空間
(物理にはありがちなんだが)でないと使えない。
FFTも実際には大抵窓関数とセットにして使われてるよね。
0062デフォルトの名無しさん
NGNG>>55
D(t)=e^(s*t) もいいけど Z^t と表現してみるのが この板では本流じゃないかな?
0063デフォルトの名無しさん
NGNGどんな数字でも0乗は1だからDCもOKじゃない?
>>61
私は逆に、フーリエ変換はラプラス変換のサブセットと理解してました。
∫f(t)*e^st dtで、sが実部、虚部両方を持った複素数のときが
ラプラス変換で、虚部のみのときがフーリエ変換だから。
歴史的にフーリエ変換が先だから、ラプラス変換は応用のひとつ(拡張)
でフーリエ変換の方がえらいというのなら...そう思います。
#わたしゃ電気、制御系なんで、ラプラスの方が親しみが。
0064デフォルトの名無しさん
01/08/26 18:35ID:dfW079aM>>1
には理解不能な話題になっていてもう見ていないかもしれないが、
そんな
>>1
にはこれをお勧め。
ttp://www.intel.co.jp/jp/developer/vtune/perflibst/index.htm
使うだけならすぐ使えるしIntelの各CPU向けにそれぞれ最適化されているので
速度も十分。マニュアルも親切で、読めばFFTとはなんぞやというのがわかるかも。
0065nanasi
01/08/31 01:53ID:MTRYrRJsだな。最初の取り分ほど量が多く、後ほど少なくなる。
この手のことは貴家センセの本に詳しいでっせ。
フーリエの冒険よりセンセの本のほうが、何故DCTを使うのか詳しく書かれて
いる。(正確に言えばDCT�Uですな)
まあ、DCTは圧縮の効率を高めるよう、データに偏りを発生させるために用い
るいるのだと思えばいいのかな。
0066デフォルトの名無しさん
01/09/01 05:34ID:jNF.zKm2エンディアンの話題でも会った? MPEGのビットストリームがどうこう言ってた人。
DCTでスペクトル解析するのは邪道かな?
DCT関連はよく使われるので、よく練りこまれた高速なライブラリがあって便利だから使ってみたんだが。
2の累乗以外の幅でも解析したいので、FFTではなくDFTにしたいんだが、
DFTだと重いのでDCTで妥協してしまったのだが、ダメかな?
0067デフォルトの名無しさん
01/09/01 08:49ID:RDsBmczU窓関数をかけた後、単純に2の累乗に足りない分ゼロで埋めておけばOK
DFTもDCTも同じだと思うんだが?
単に複素数だから重いというなら実数データを1/2幅のDFTでする方法を使えばいい
0068nanasi
01/09/01 09:29ID:4vAZTrpI周波数解析はやってないからわかんない。必要なことは勉強するけど、理学の
勉強じゃなくて工学の勉強だから、ご都合主義。
局所領域の解析なら、精度はも一つでもウェーブレットになるんでしょうな。
画像の特徴量つうかパラメータ化?ってところに興味があるからウェーブ
レットは勉強するけど、それ以外は知らん。しかも頭に残ってない。
DCTを用いるケースで言えば、ある画像とその画像を180°回転させた画像を
区別できるってことかな。フーリエだと結果が同じ画像になってしまって都
合が悪い、てな話を教授としたことはあるが…。
解析対象の性質に合ってれば、別に何使ってもいいんじゃない? 理学の人から見ると
この手の解析はどのみちインチキに見えるらしいし。
0069デフォルトの名無しさん
01/09/01 20:31ID:jNF.zKm2>>68
レスサンクス。
プレイヤーのスペアナ表示に使いたいだけだから、嘘っぽいものでも構わないんだ。
例えば、160pointで解析したい場合、160pointDFT(orDCT)するのと、
256pointになるように0を埋めて、FFTするのとどっちが速いかな?
実際に計測しろと言われそうだが、なにぶんWindowsなものであてにならん。
システムモニタの負荷ではほとんど変わらないんだが、
負荷のうちのほとんどは計算ではなく描画で使ってるみたいのなのでなんとも言えん。
計算自体はかなり軽いので、アナライザ関数のとこに計測ルーチン埋めて
毎回の実行時間を記録してみても誤差が大きすぎてよくわからん。
つーかそれくらいの差気にしなくてもよいのかな?
0070デフォルトの名無しさん
01/09/01 22:12ID:cqAA7v/U>256pointになるように0を埋めて、FFTするのとどっちが速いかな
ステレオなら複素数に実部虚部を使う2実数のFFTが使えるので 256FFTが高速です
さらに、周波数分解能の上でも256FFTが上でしょう
実際160点DFTだと低周波の分解能はまったく足らないのでは?
それとも低周波だけBPFかQの高いLPFで処理してる?
0071デフォルトの名無しさん
01/09/01 22:47ID:jNF.zKm2解析結果を周波数軸はリニアなままで表示してるから、
表示領域の横幅に依存する感じ。
対数スケールで表示するなら、確かに不足するけど。
複素数のFFTって使い方がよくわからないんだけど、
例えば左チャンネルを実数部、
右チャンネルを虚数部に入れてかけるのかな?
そうすると、出てきた結果はどう扱えばいいの?
あと、モノラルの場合って、実数部に入れて虚数部0にするの?
それとも実数部と虚数部に同じ値を入れるの??
スマソ、漏れ専門卒でその辺の数学やって無いからわからん。
必要に駆られて実戦でやってるだけだから。
0072デフォルトの名無しさん
01/09/01 22:50ID:/fV/gw3ohttp://piza2.2ch.net/test/read.cgi?bbs=tech&key=993457354
ソースへのリンクもあるから追いかけてみたら?
0073デフォルトの名無しさん
01/09/01 22:54ID:/fV/gw3o203 に実数2組のFFTを 実部虚部に与えてした場合について書いてある
0074デフォルトの名無しさん
01/09/01 23:45ID:jNF.zKm2遅くなった。。。
FFT部分は確かに速くなってるのだが、
表示領域が160バンド分しかないため、256バンドでてきた結果を
160バンドに縮小(?)する部分が重いらしい。
結果として全体では重くなってしまった。
大人しくDCTでやってろってことかも知れない……
0075デフォルトの名無しさん
01/09/02 10:22ID:6hJ7KTEIいっそ512点に増やして周波数分解能をあげて3点毎に合計して上下5点を捨てるとか
0076デフォルトの名無しさん
01/09/02 13:36ID:J64zStzc電波の場合は、虚数部と実数部を取り出す
回路をとおすらしい
オーディオの場合はデジタルフィルタを使うらしいが
おれも、よく分からん
0077デフォルトの名無しさん
01/09/02 15:37ID:4.l/Qws.今回例にあげたのがたまたま160pointなだけで、
最悪1pointから(画面の表示サイズの制限から)
1960pointぐらいまで可変するのよ。
だから、
>いっそ512点に増やして周波数分解能をあげて3点毎に合計して上下5点を捨てるとか
こういう処理には出来ないのよ。
2の累乗からそれ以下のいくつにでも縮小できる汎用的な変換関数になっちゃう。
一応、今回は表示位置0〜160を0〜256にマッピングして、
そうすると小数位置になるから、前後の値からコサイン補完して表示してみたのだけど。
線形補完ならもうちょい速いかな。
どっちにしろ、SSEとか適用しにくいのであんまり使いたくないタイプの処理だ。。。
DCTとFFTがSSE最適化されてるから遅くなっただけで、
SSE使えない環境ではちゃんと速くなるみたい。
0078デフォルトの名無しさん
01/09/02 15:44ID:hKBCqfHs方がどう考えてもいいんじゃないの?
0079デフォルトの名無しさん
01/09/02 15:47ID:4.l/Qws.sqrt(re*re + im*im);
になるでしょ?(C言語風表記)
DCTだと片方しか出ないから、絶対値取るだけで済む。
0080デフォルトの名無しさん
01/09/02 16:10ID:hKBCqfHscos( (2n+1)kπ/2N )
みたいな式だから パワーを計算するなら やっぱり hypot は必要だよ
0081デフォルトの名無しさん
01/09/02 16:59ID:fY9Tvgc.漏れが見た本にはそう書いてあった……
正確な式きぼーん
0082デフォルトの名無しさん
01/09/02 19:32ID:0GEkTz1s実数を与えた FFTの場合、 re, im は それぞれ偶関数、奇関数になる
だから n=0 と n=N/2 でない nについて
hypot(re[n],im[n]) = hypot(re[N-n],im[N-n])
コサイン変換もパワーが必要なら hypot( A[n] ,A[N-n]) (もちろんn=0 と n=N/2は除く)
と求めなければいけない
つまりパワーの数は N/2 に減ってしまう
0083デフォルトの名無しさん
01/09/02 19:35ID:0GEkTz1sその本に書いてあったパワーは、たんにcos成分の強度という意味じゃないのかね
>>81
008481
01/09/04 21:51ID:rccG4HwIよくよく考えてみたら、hypot(re,im)==sqrt(re*re+im*im)ぢゃないかヽ(`Д´)ノ
あってんぢゃん、俺の言ってた(本で見た)ことヽ(`Д´)ノ
>_hypot 関数は、2 辺の長さ x と y が与えられると、
>直角三角形の斜辺の長さを計算します。
>_hypot 関数の呼び出しは、
>( x の 2 乗 + y の 2 乗 ) の平方根を計算することに相当します。
008580
01/09/05 07:45ID:mNqbuqRcコサイン変換なら絶対値でいいって所が違うよって意味だよ
0086デフォルトの名無しさん
01/09/05 10:27ID:ue.BG8V.>hypot(re,im)==sqrt(re*re+im*im)
hypotはre*reの計算でオーバーフローをおこすような
場合でもちゃんと計算してくれるのではないでしょうか
■ このスレッドは過去ログ倉庫に格納されています