Presentation is loading. Please wait.

Presentation is loading. Please wait.

Silverlight製のデモもあるよ ++C++; 岩永

Similar presentations


Presentation on theme: "Silverlight製のデモもあるよ ++C++; 岩永"— Presentation transcript:

1 Silverlight製のデモもあるよ ++C++; 岩永
フーリエ変換 Silverlight製のデモもあるよ ++C++; 岩永

2 Fourier Transformation
フーリエ級数展開 フーリエ変換

3 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑓(𝑥)
フーリエ級数展開 任意の周期関数はsin/cosの和に分解できる 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑓(𝑥) †正確には「区間的になめらか」っていう条件付き

4 sin⁡𝑘𝑥? sin 𝑥 sin 2𝑥 sin 3𝑥 sin 4𝑥 周波数 音でいうと 絵でいうと 低周波数 低音 べた塗 高周波数 高音
変化激しい

5 = 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 要するに いろんな周波数の正弦波の和
フーリエ級数展開 = 周波数分析 要するに フーリエ級数展開 周波数ごとに分解 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 いろんな周波数の正弦波の和

6 複素形 任意周期 フーリエ変換 離散フーリエ変換 周期T 周期のない関数向け 離散信号向け どれも本質的には同じ バリエーション
𝑓 𝑥 = 𝑘=−∞ ∞ 𝑐 𝑘 𝑒 𝑖𝑘𝑥 複素形 任意周期 周期T フーリエ変換 周期のない関数向け 離散フーリエ変換 離散信号向け sin 𝑥 = 𝑒 𝑖𝑥 − 𝑒 −𝑖𝑥 2𝑖 , cos⁡𝑥= 𝑒 𝑖𝑥 + 𝑒 −𝑖𝑥 2 ⁡ 𝑓 𝑥 = 𝑘=−∞ ∞ 𝑐 𝑘 𝑒 𝑖 2𝜋𝑘 𝑇 𝑥 𝑓 𝑥 = 1 2𝜋 −∞ ∞ 𝐹 𝑘 𝑒 𝑖𝑘𝑥 𝑑𝑘 𝑓[𝑛] = 𝑘=−∞ 𝑁−1 𝐹[𝑘] 𝑒 𝑖𝑘𝑛 どれも本質的には同じ

7 What to use で?何ができるの?

8 偏微分方程式が解けます ちょっとコンピューターから離れすぎますね・・・ フーリエ変換を使うと
          ____        / \  /\ キリッ .     / (ー)  (ー)\   線形方程式なら敵なしだお     /   ⌒(__人__)⌒ \     |      |r┬-|    |      \     `ー’´   /     ノ            \   /´               ヽ  |    l              \  ヽ    -一””””~~``’ー?、   -一”””’ー-、.   ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒)) ちょっとコンピューターから離れすぎますね・・・

9 音声解析ができます 画像解析ができます データ通信にも使えます ファイル圧縮したり 低音強調したりリバーブかけたり 同じく、圧縮したり
フーリエ変換を使うと 音声解析ができます ファイル圧縮したり 低音強調したりリバーブかけたり 画像解析ができます 同じく、圧縮したり ぼかしとか輪郭強調かけたり データ通信にも使えます データの帯域 = 周波数帯域

10 例1: 音声フィルター ローパスフィルター ローパス(低域透過)

11 例2: スペクトログラム 信号の周波数分布を可視化 周波数 時間

12 人の耳 人の耳はフーリエ変換的な処理をしてる 巻貝みたいな器官 巻貝の中身の模式図 高周波を 共鳴させる 低周波を 共鳴させる

13 How to transform どうやって展開するの?

14 周波数ごとに分解できると便利っぽいけども
フーリエ級数展開のしかた 周波数ごとに分解できると便利っぽいけども 𝑓 𝑥 = 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 じゃあ、どうやって この 𝑎 𝑘 とか 𝑏 𝑘 とか求めるの?

15 三角関数には以下のような性質が −𝜋 𝜋 sin 𝑚𝑡 𝑑𝑡 =0 −𝜋 𝜋 cos⁡(𝑚𝑡) 𝑑𝑡 =0
三角関数の直行性(1) 三角関数には以下のような性質が −𝜋 𝜋 sin 𝑚𝑡 𝑑𝑡 =0 −𝜋 𝜋 cos⁡(𝑚𝑡) 𝑑𝑡 =0 −𝜋 𝜋 sin 𝑚𝑡 sin⁡(𝑛𝑡)𝑑𝑡 = 𝜋 (𝑚=𝑛) 0 (𝑚≠𝑛) −𝜋 𝜋 cos⁡(𝑚𝑡)cos⁡(𝑛𝑡)𝑑𝑡 = 𝜋 (𝑚=𝑛) 0 (𝑚≠𝑛) −𝜋 𝜋 sin 𝑚𝑡 cos⁡(𝑛𝑡)𝑑𝑡 =0

16 同じものを掛けて積分したときだけ非0 Φ= 1 2 , sin 𝑚𝑥 , cos⁡𝑚𝑥 𝜙 1 , 𝜙 2 ∈Φ
三角関数の直行性(2) 同じものを掛けて積分したときだけ非0 Φ= , sin 𝑚𝑥 , cos⁡𝑚𝑥 𝑚は任意の自然数 𝜙 1 , 𝜙 2 ∈Φ 1 𝜋 −𝜋 𝜋 𝜙 1 𝑥 𝜙 2 𝑥 𝑑𝑥= 𝜙 1 と 𝜙 2 が同じ時だけ1

17 demo http://ufcpp.net/study/csharp/ClientBin/FourierPlot.html sin(x)
cos(x) sin(x) * sin(2 * x) sin(2 * x) * sin(3 * x) sin(x) * sin(x) … 正の値しか持たない sin(x) * cos(x) sin(x) * cos(2 * x) cos(2 * x) * cos(3 * x) cos(2 * x) * cos(2 * x) … 正の値しか持たない まあ、ぶっちゃけ、 sin(5 * x) * sin(2 * x) == (cos(3 * x) - cos(7 * x)) / 2

18 直行分解(1) 掛けて積分 −𝜋 𝜋 𝑓 𝑥 𝑑𝑥 = −𝜋 𝜋 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑑𝑥 =2𝜋 𝑎 0 ここしか残らない −𝜋 𝜋 𝑓 𝑥 cos 𝑚𝑥 𝑑𝑥 = −𝜋 𝜋 cos⁡𝑚𝑥 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑑𝑥 =𝜋 𝑎 𝑚 cos⁡𝑚の項しか残らない sin⁡𝑚の項しか残らない −𝜋 𝜋 𝑓 𝑥 sin 𝑚𝑥 𝑑𝑥 = −𝜋 𝜋 sin 𝑚𝑥 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑑𝑥 =𝜋 𝑏 𝑚

19 𝑝 =𝑎 𝑖 𝑥 +𝑏 𝑖 𝑦 𝑝 𝑏 𝑎= 𝑝 ̇ 𝑖 𝑥 𝑏= 𝑝 ̇ 𝑖 𝑦 𝑖 𝑦 𝑎 𝑖 𝑥
直行分解(2) やってることはベクトルの直行分解と同じ 𝑖 𝑦 𝑖 𝑥 𝑝 𝑝 =𝑎 𝑖 𝑥 +𝑏 𝑖 𝑦 𝑎 𝑏 𝑎= 𝑝 ̇ 𝑖 𝑥 𝑏= 𝑝 ̇ 𝑖 𝑦

20 やってることはベクトルの直行分解と同じ ベクトル フーリエ級数展開 𝑝 =𝑎 𝑖 𝑥 +𝑏 𝑖 𝑦 𝑎= 𝑝 ̇ 𝑖 𝑥
直行分解(3) やってることはベクトルの直行分解と同じ ベクトル フーリエ級数展開 𝑓 𝑥 = 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑝 =𝑎 𝑖 𝑥 +𝑏 𝑖 𝑦 𝑎 0 = 1 2𝜋 −𝜋 𝜋 𝑓 𝑥 𝑑𝑥 𝑎= 𝑝 ̇ 𝑖 𝑥 𝑎 𝑘 = 1 𝜋 −𝜋 𝜋 𝑓 𝑥 cos 𝑘𝑥 𝑑𝑥 𝑏= 𝑝 ̇ 𝑖 𝑦 𝑏 𝑘 = 1 𝜋 −𝜋 𝜋 𝑓 𝑥 sin 𝑘𝑥 𝑑𝑥

21 ということで、結果 𝑓 𝑥 = 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥
フーリエ級数展開 ということで、結果 𝑓 𝑥 = 𝑎 0 + 𝑘=1 ∞ 𝑎 𝑘 cos 𝑘𝑥+ 𝑏 𝑘 sin 𝑘𝑥 𝑎 0 = 1 2𝜋 −𝜋 𝜋 𝑓 𝑥 𝑑𝑥 𝑎 𝑘 = 1 𝜋 −𝜋 𝜋 𝑓 𝑥 cos 𝑘𝑥 𝑑𝑥 𝑏 𝑘 = 1 𝜋 −𝜋 𝜋 𝑓 𝑥 sin 𝑘𝑥 𝑑𝑥

22 複素形 フーリエ変換 離散フーリエ変換 バリエーション 𝑓 𝑥 = 𝑘=−∞ ∞ 𝑐 𝑘 𝑒 𝑖𝑘𝑥
𝑓 𝑥 = 𝑘=−∞ ∞ 𝑐 𝑘 𝑒 𝑖𝑘𝑥 𝑐 𝑘 = 1 2𝜋 −𝜋 𝜋 𝑓 𝑥 𝑒 −𝑖𝑘𝑥 𝑑𝑥 𝑓(𝑥)= −∞ ∞ 𝐹 𝑘 𝑒 𝑖𝑘𝑥 𝑑𝑘 𝐹(𝑘)= 1 2𝜋 −∞ ∞ 𝑓 𝑥 𝑒 −𝑖𝑘𝑥 𝑑𝑥 𝑓 𝑛 = 𝑘=0 𝑁−1 𝐹 𝑘 𝑒 𝑖𝑘𝑛 𝐹 𝑘 = 1 𝑁 𝑛=0 𝑁−1 𝑓 𝑛 𝑒 −𝑖𝑘𝑛

23 Let’s Fourier transform
サンプル

24 demo 矩形波 のこぎり波 𝑥 インパルス いくつか具体例
・矩形波 floor(sin(x))+0.5 floor(sin(2 * x))+0.5 sin(x)+sin(3*x)/3+sin(5*x)/5+sin(7*x)/7+sin(9*x)/9 ・のこぎり波 x sin(x)-sin(2*x)/2+sin(3*x)/3-sin(4*x)/4+sin(5*x)/5-sin(6*x)/6+sin(7*x)/7-sin(8*x)/8+sin(9*x)/9-sin(10*x)/10 atan2(sin(2*x), cos(2*x)) ・とがってる場所が苦手 x * x * x * x 両端辺りで値が小さい ・|x| abs(x) acos(cos(x)) acos(cos(2 * x)) 不連続がないんで、割と収束が速い ・インパルス abs(x) < 0.1 ? 10 : 0 abs(x) < ? 1000 : 0 次数 N を増やすと徐々に・・・ x == 0 ? 18 :sin(9.5*x)/sin(0.5*x)

25 部分和を取ることで関数近似が可能 不連続な点はなかなか収束しない インパルスのフーリエ変換 = 定数 なめらかでない点も少し苦手
性質 部分和を取ることで関数近似が可能 不連続な点はなかなか収束しない なめらかでない点も少し苦手 不連続な場所にピークが出る インパルスのフーリエ変換 = 定数

26 Further Reading 参考 (時間が余ったとき用)

27 任意の周期関数が三角関数で展開できる という前提で話進めたけども、ほんとに?
取りこぼしないの? 任意の周期関数が三角関数で展開できる という前提で話進めたけども、ほんとに? 𝑓 𝑥 = 𝑘=−∞ ∞ 𝑐 𝑘 𝑒 𝑖𝑘𝑥 , 𝑐 𝑘 = 1 2𝜋 −𝜋 𝜋 𝑓 𝑥 𝑒 −𝑖𝑘𝑥 𝑑𝑥 𝑓 𝑥 = 𝑘=−∞ ∞ 1 2𝜋 −𝜋 𝜋 𝑓 𝑡 𝑒 −𝑖𝑘𝑡 𝑑𝑡 𝑒 𝑖𝑘𝑥 累和と積分の順序交換 = −𝜋 𝜋 𝑓 𝑡 1 2𝜋 𝑘=−∞ ∞ 𝑒 𝑖𝑘 𝑥−𝑡 𝑑𝑡 ディリクレ核 = −𝜋 𝜋 𝑓 𝑡 lim 𝑛→∞ 𝐷 𝑛 𝑥−𝑡 𝑑𝑡 =𝑓 𝑥 詳しくは専門書読んで

28 便宜上、こんな関数を考えてみる (ほんとは関数とは言えない。関数もどき) デルタ関数と呼ぶ 𝛿 𝑥 = ∞ 𝑥=0 0 𝑥≠0
𝛿 𝑥 = ∞ 𝑥=0 0 𝑥≠0 任意の関数𝑓 𝑥 に対して、 𝑓 0 = 𝑎 𝑏 𝑓 𝑥 𝛿 𝑥 𝑑𝑥 ただし、𝑎,𝑏は𝑎<0,𝑏>0となる任意の実数

29 デルタ関数はフーリエ変換でよく使う デルタ関数とフーリエ変換 1 2𝜋 𝑘=−∞ ∞ 𝑒 𝑖𝑘 = 𝑘=−∞ ∞ 𝛿 𝑡−2𝜋𝑘
1 2𝜋 𝑘=−∞ ∞ 𝑒 𝑖𝑘 = 𝑘=−∞ ∞ 𝛿 𝑡−2𝜋𝑘 ディリクレ核の収束値は デルタ関数級数 デルタ関数を積分で表現 1 2𝜋 −∞ ∞ 𝑒 𝑖𝑘𝑥 𝑑𝑥 =𝛿 𝑥 デルタ関数の フーリエ変換は定数 1 2𝜋

30 以下のキーワードで調べて見て Distribution(シュワルツの超関数、分布) Hyper function(佐藤の超関数)
デルタ関数の正当化 以下のキーワードで調べて見て Distribution(シュワルツの超関数、分布) Hyper function(佐藤の超関数) ∞を含む関数を正当化する理論 安易に∞に触れるとろくなことがないんで、結構面倒なことをしてます

31 デルタ関数を使うと、積分と累和を変換できる
離散関数と連続関数(1) デルタ関数を使うと、積分と累和を変換できる 連続関数𝑓 𝑥 に対して、デルタ関数級数を掛ける これを積分すると・・・ 𝑓 𝑥 𝑘=−∞ ∞ 𝛿 𝑥−𝑘 −∞ ∞ 𝑑𝑥 𝑓 𝑥 𝑘=−∞ ∞ 𝛿 𝑥−𝑘 = 𝑘=−∞ ∞ 𝑓 𝑘

32 = 離散関数𝑓 𝑛 に対して、以下の連続関数𝑓 𝑥 を定義 このとき、 𝑓 𝑛 の離散フーリエ変換 𝑓 𝑥 のフーリエ変換
離散関数と連続関数(2) 離散関数𝑓 𝑛 に対して、以下の連続関数𝑓 𝑥 を定義 このとき、 𝑓 𝑥 = 𝑘=−∞ ∞ 𝑓 𝑘 𝛿 𝑥−𝑘 𝑓 𝑛 の離散フーリエ変換 𝑓 𝑥 のフーリエ変換

33 フーリエ変換 𝐹 𝑘 が収束するための十分条件 (少なくともこの条件を満たしていれば変換可能) 𝑓 𝑥 が二乗可積分
フーリエ変換可能な関数 フーリエ変換 𝐹 𝑘 が収束するための十分条件 (少なくともこの条件を満たしていれば変換可能) 𝑓 𝑥 が二乗可積分 𝑓(𝑥)= −∞ ∞ 𝐹 𝑘 𝑒 𝑖𝑘𝑥 𝑑𝑘 𝐹(𝑘)= 1 2𝜋 −∞ ∞ 𝑓 𝑥 𝑒 −𝑖𝑘𝑥 𝑑𝑥 −∞ ∞ 𝑓 𝑥 2 𝑑𝑥 <∞

34 単なる積分でなく、以下のような積分を使う
フーリエ変換可能な範囲を広げる 単なる積分でなく、以下のような積分を使う ガウス関数で抑えられる関数ならなんでもフーリエ変換可能 緩増加(tempered)関数 𝑥とか 𝑥 2 もフーリエ変換可能 フーリエ変換の結果は通常の関数にはならない (超関数になる) 1 2𝜋 −∞ ∞ 𝑒 − 𝑥 2 𝑓 𝑥 𝑒 −𝑖𝑘𝑥 𝑑𝑥 ガウス関数で発散を抑える

35 純粋数学寄り 信号処理寄り ルベーグ積分(Lebesgue integral) 関数解析(functional analysis)
その他、関連キーワード 純粋数学寄り ルベーグ積分(Lebesgue integral) 測度(measure) 関数解析(functional analysis) 固有関数展開(eigen function expansion) 信号処理寄り インパルス応答(impulse response) ラプラス変換(Laplace transformation) Z変換(Z transformation)


Download ppt "Silverlight製のデモもあるよ ++C++; 岩永"

Similar presentations


Ads by Google