(complex) morlet waveletの係数の名前の付け方とか、ほどよい設定値とか資料によって異なっているので、可能な範囲で整理してみた


あまり整理できてませんが・・・

#1. waveletの式の変数とか式が少しずつ違ってて,きちんと同じものを指しているかよくわからない.

#ref. matlabの資料が参照している(と思われる)Teolis(1998)Computational Signal Proceesing with Wavelets. P66より
###式
![morlet formula orig][1]
###変数の名前

γb: variance (bandwidth)と命名してある. matlabの資料のfbと同じ.時間的分散と思われる.しかしここでの時間的分散とは何?
γc: center frequencyと命名してある. これはほとんどどれでも一致している. mneとかでfrequencies = np.arange(8,30)とかで設定する値と理解してます.
j: 虚数単位

#ref. [stack overflow][2]

### 式
w(t,f<sub>0</sub> ) = A・exp(−t<sup>2</sup> / 2*σ<sup>2</sup> )・exp(2*i*π*f<sub>0</sub>*t) = A・exp(2 iπ f<sub>0</sub> t - (t<sup>2</sup> / 2σ<sup>2</sup>))
### 変数
f<sub>0</sub>: center frequency (上のγc、matlab wavelet toolboxではfc)
σ: σ = m/2πf<sub>0</sub> と記載されている. [Tallon-Baudry (1999)][3]の記載にあるように時間に関する標準偏差(sigma t)の意味ぽい. 上のTeolis(1998)の式と比較して、
γb = 2σ<sup>2</sup>　と仮定すると一致する.
m: 定数. compromise between time and frequency resolutionとある. 7に設定しました、とも.
A = 1 /(σ (2π)<sup>0.5</sup>) = 1/(σ√2π):  e(exp)の前の部分を変数に置き換えてある. normalization factorという名前で紹介している. 

#ref. [Tallon-Baudry (1999)][3], p154 Box 2の説明
###式
w ( t , f ) = A . e x p ( – t<sup>2</sup>/ 2σ<sub>t</sub><sup>2</sup> ).exp(2i π f t): これはstack overflowと同じ.
###変数
f: 上のf<sub>0</sub>と同じ. center frequency
σ<sub>t</sub>: 上のσと同じ. time domainの標準偏差と記載あり.

**A=1/(σt √π)1/2**: [stack overflow][2]と同じくnormalization factorと書いてある. 式がちょっと違う. [Tallon-Baudry(1997)][11]でも同じ記載をしている.意図があるのか,間違え+コピペなのか不明.

#ref. [matlab wavelet toolbox][4]
###式
ψ(x)=1/√πfb * **exp(x<sup>2</sup> / fb)** * exp(2iπfcx) :コピペがうまくいかなかったので、書き写し.
上の2つと比較して**exp(x<sup>2</sup>/fb)**の部分に**マイナスがついていない**. このページだけなので、間違えのような気がします.
他はTeolis(1998)、stack overflowと一致
###変数
x: 上のtと同じ
fc: 上のf0とかf、γcと同じ. center frequency
fb: bandwidth parameterと名前が付けられている. Teolis(1998)のγbと同じ.


#ref. [matlab help][5]
###式
![wavelet formula][6]
またちょっと違う. eの前 (上に出てくるA: normalization factor)の部分で分母と分子が逆になっている.分母分子の違いはこのページだけなので、たぶん間違い.
他はTeolis(1998)、stack overflowと一致
###変数
fc, fbの名前の付け方は[matlab wavelet toolbox][4]と同じ

#ref. [Stack exchange][7] wavelet cmor fb fcとかググると上位でヒットします.
###式
![wavelet formula another][8]
e<sup>-j2pifct</sup>のマイナスは不要と思われる.

# 1のまとめ
総合判断すると(complex)Morlet waveltの式はTeolis(1998)Computational Signal Proceesing with Wavelets. P66、Stack overflowの記載が正しいような気がします. Teolis(1998)はテキストだし.
てか資料によってほんとに式が微妙に違ってて, 実は間違いだらけなのかという気がします.

# 2. waveletのほどよい設定とは.(主にmne pythonを念頭に)
## [fieldtrip][9](time-frequency analysis, waveletの項)
cfg.width. It determines the **width** of the wavelets in number of cycles. とあります. サンプル中では
```
cfg.width      = 7; 
```
となっていました. 
また,
The **spectral bandwidth** at a given frequency F is equal to F/width*2
the **wavelet duration** is equal to width/F/pi
と記載があります. Fは周波数で、上記のcenter frequency (f, f<sub>0</sub>,γc, fc)と同じものと思われます.

- ただspectral bandwidth, wavelet durationが何を指しているかよくわかりません.
- spectral bandwidthがσ<sub>f</sub>とか,wavelet durationがσ<sub>t</sub>に一致するとか, そんな簡単な関係ではないようです.
用語が多くて混乱します.

## [Tallon-Baudry(1999)][3]
**σ<sub>f</sub> = 1/(2πσ<sub>t</sub>)** (式2.1) 
と関係を示してあります. 

- σ<sub>t</sub> はstandard deviation (time domain)と記載されています. 今まで何度か出てきたσ<sub>t</sub>, σと同じもののようです.
- σ<sub>f</sub>は同様にstandard deviation (frequency domain)と記載されています。

**f/σ<sub>f</sub> (constant ratio: greater than five in practice)** (式2.2) と記載されています.

- fはcenter frequency(fieldtripの記載のF, 上の方出てくるf<sub>0</sub>,γc, fc)と同じと考えてよいようです.

## [Roach & Mathalon (2008)][10]
**σ<sub>t</sub> = 1/(2πσ<sub>f</sub>)** (式2.3)
と関係を示してあります.[Tallon-Baudry(1999)][3]の式(2.1)を変形すれば同じになります.
#### 変数の記載
σ<sub>t</sub>: temporal SDと記載されています.
σ<sub>f</sub>: spectral bandwidth around its center frequency, f0, that has a SD of σ<sub>f</sub>とあるので周波数のSDと言えそうです.Morlet waveletはgaussian envelope(正規分布のエンベロープ)という言葉がちょいちょい出てくるのでSDがwaveletの形の指標として使いやすいのでしょう.
ただ、同じページの下の方に
spectral bandwidth around any given center frequency is mσ<sub>f</sub>.
ともあります。mが掛けられています。これらから察するに
**spectral bandwith = mσ<sub>f</sub> , and has σ<sub>f</sub> in it.**
という意味なのかと想像しています. 本文が混乱させる記述で困ります.

**c=f<sub>0</sub>/σ<sub>f</sub>** (式2.4)
と**c (constant ratio)**という変数を定義してあります**(たぶんcfg.widthと同じモノ)**. これも式2.2に変数cが割り当てられただけで、同じものを指していると考えられます.

- cは5,6,7くらいの数字がよいと本文中で推奨されています. 理由はσ<sub>t</sub>が1周期以上の波を含むように,だそうです ("constan, c, is typically recommended to be greater than 5, and is often set to values of 6 or 7, which corresponds to a σ<sub>t</sub> that encompasses at least one full sinusoidal cycle for any particular frequency").- 
- [stack overflow][2]中に**σ = m/(2 π f<sub>0</sub>)** という式が出てきて(σ = σ<sub>t</sub>と思われる)、下の式(2.5)と一致します.なのでこの式のmとconstant ratio cは同じものを指していると思われます.

###ちょっと余談: cが7くらいだとσ<sub>t</sub>が1周期以上の波を含む、の説明 (間違ってるかもしれません)
----
式(2.3), (2.4)を用いてσ<sub>t</sub> =の形に変形をすると

**σ<sub>t</sub> = c/(2πf) = c/(2π)*1/f**  (式2.5)という式が得られます. 

- fは周波数なので1/fは1周期分の時間ということになります.
- ということで1/fの前にあるc/(2π)が1を超えると, σ<sub>t</sub>が1周期以上の波を含むように, という (なぜそのような長さが必要か理由はわかりませんが)推奨を満たすことができます.
- 2π = 6.28ちょっとなのでc=7でc/(2π) > 1となり, σ<sub>t</sub>が1周期を超える波を含む,と考えられます.

**よくわからない変数m**
---
[Roach & Mathalon (2008)][10]にa factor mとして説明があり,
**temporal window for any given frequency (f<sub>0</sub>) is m σ<sub>t</sub>** (式2.6)
とあります. temporal windowが何を指しているかよくわかりません.
ただ, temporal windowは[fieldtrip][9]に出てくるwavelet durationと同じものではないか?という気がします. 式を変形してみましょう.

式(2.6)と(2.5)から
temporal window = mc/(2π)*1/f = mc/(2π)/f となります.
上のfieldtripの箇所に記載を繰り返しますが,

**wavelet duration** is equal to **width/F/pi** (式2.7)
F=f なので,c=widthと仮定し, m=2とすると, temporal window = wavelet duration
が成り立ちます.
**temporal window** (by Roach & Mathalon(2008)) **= wavelet duration** (by fieldtrip)としてよさそうです.

[Roach & Mathalon (2008)][10]中には
**spectral bandwidth around any given center frequency is mσ<sub>f</sub>**
という記載もあります. これも[fieldtrip][9]のspectral bandwidthと同じでしょうか.
fieldtripより: spectral bandwidth = F/width *2

先のwidth = cが正しいとすると, c = f<sub>0</sub>/σ<sub>f</sub> (式2.4) 
 とありますので.

Roach & Mathalon(2008)のspectral bandwidth = mσ<sub>f</sub> = mf<sub>0</sub>/c =  F/width * m (fieldtripの式)
ということで,やはりm=2で同じものを指していると言えそうです.

またfieldtripのcfg.width = c (constant ratio)と言えそうです.

用語が多すぎです. 混乱します.
ちなみにfieldtrip中ではこの"m"に相当する明示的な記載はありません.内部で適当に処理してるのでしょうか.

- [Roach & Mathalon (2008)][10]のreferenceですが, [Tallon-Baudry (1997)][11]の方に, "wavelet duration 2σ<sub>t</sub> of about two periods of oscillatory activity at f<sub>0</sub>" と記載が出てきます. ここでもm=2として扱ってるようです.
- [Ford et al (2008)][14]では"constant ratio (σf=f/7) and wavelet duration (4σ<sub>t</sub>)""spectral bandwith of 4σ<sub>f</sub>と記載があります. fieldtripでのcfg.width =7 (他の資料ではconstant ratio)で, [Roach & Mathalon (2008)][10]のm=4の設定のようです.
- "mは6推奨だけど,4とか2の解析例もある" と記載しています([Roach & Mathalon (2008)][10]).

# [MNE python][13]
- tfr_morletとかで周波数分析できるが、n_cyclesというそれっぽい設定項目があります.
- ただ"The number of cycles globally or for each frequency."という記載でn_cyclesがcを指してるか,temporal durationを指してるか, mを指してるかさっぱりわかりません.
- 解析例を見ると7とか2とかfreq/2とかfreq/3とか見かけました.
- というわけで結局よくわかりません.設定例に7とかあるので, fieldtripのcfg.widthと同じじゃないかなーとか,その程度です.

### 参考：tfr_morletが内部で使っているmorletのスクリプトを覗いてみると
mne/time_frequency/tfr.pyにdef morletがあります.スクリプト中に
```tfr.py
sigma_t = this_n_cycles / (2.0 * np.pi * f)
```
とあるので, 式(2.5)からするとthis_n_cycles (=n_cycles) = c (constant ratio)でないかと思います.

# 2のまとめ
- fieldtripのcfg.widthとmne pythonのn_cycles, 資料に出てくるc (constant ratio.式2.4), [stack overflow][2]のmは同じものを指しているぽい.パラメータの意義を理解"できませんが", constant ratioのところを読んで少しでもわかるように努めたいと思います. なお[Roach & Mathalon (2008)][10]のmはまた別.
- σ<sub>t</sub>はtemporal SDであり、wavelet duration (おそらく=temporal window)とは異なる. wavelet duration = mσ<sub>t</sub> ([Roach & Mathalon (2008)][10]より)
- 同様にσ<sub>f</sub>はfrequency SDでありspectral bandwidthとは異なる. spectral bandwidth = mσ<sub>f</sub> ([Roach & Mathalon (2008)][10]より)
- constant ratioの説明も含め7に設定してるのをよく見かけるので,cfg.widthとかn_cyclesの設定はまず7で見るのがよいであろう.
- [Roach & Mathalon (2008)][10]のmはmne python, fieldtripでは明示的に設定するところはない(と思う). fieldtripはm=2ぽい. mneも同等ではないか.
- mne pythonでn_cycles = 2とかの解析例あり([source_band_induced_power][12]の例なのでwaveletとは違うかもしれないが). 適切な設定なのかは未だ不明. [Roach & Mathalon (2008)][10]ではcは5以上と書いてあるので, このずれからすると n_cycles = cではない可能性も...
- そもそもMorletとcomplex morletの違いがちゃんと分かってません.なのでこれを当てにせず,資料を1つずつあたりましょう.

[1]:https://47a10315-a-62cb3a1a-s-sites.googlegroups.com/site/iroironeuromag/file-cabinet/morlet.png?attachauth=ANoY7crKrulwPQZ8MiN2AqDm_Sv0NJHvFh16P-4i_PKT0qZEuRIey4NJtmSxybqvDMISm9WIFwFKIZuXYjmpvBZn3sOY3txwGdpEYIG-rq3DPt5ZIXw4SBKVknOjYc0dfUYg1uGGHNhYblsvIhtfXl9ySTOp97zCtk8VPMnXjoOgvVrDlBGEACnPu2d8Xz-Ajl9ZKOkIXY3oKJnzqBS7M-aYOHREk1s0p98z0IfBNIKW95c3FXRQ-qc%3D&attredirects=0
[2]:http://stackoverflow.com/questions/19354901/spectrogram-from-complex-morlet-wavelet-recreating-article-result-from-data
[3]:http://www.ncbi.nlm.nih.gov/pubmed?holding=jhumlib&otool=jhumlib&term=10322469
[4]:http://jp.mathworks.com/help/wavelet/ug/wavelet-families-additional-discussion.html#f8-40178
[5]:http://www.ece.northwestern.edu/local-apps/matlabhelp/toolbox/wavelet/ch06_a37.html
[6]:http://www.ece.northwestern.edu/local-apps/matlabhelp/toolbox/wavelet/ch06_440.gif
[7]:http://dsp.stackexchange.com/questions/10196/what-is-proper-setting-for-fb-fc-in-complex-morlet-wavelet-cmor
[8]:https://47a10315-a-62cb3a1a-s-sites.googlegroups.com/site/iroironeuromag/file-cabinet/morlet_wrong.png?attachauth=ANoY7crUbTAgf16u-PZvbMYiAn3N6a-8LXLl7U8PpAg2saHfixnqjTAL2AMVUqqKXF3Cim0TycJuftaCns4F6FnhAIxha8U3i1a7ypUo4eT3jIHH2thJmtLExS39p49oGsfI7v-ZbtNSMyVn425TZttt3LksG-Dl63u190dmqv0uiToyIyNPm3glv-lp-xlaYQOyEy0VI3eijQgqm7yKv6KM2gpSDda4_dRk6i8ICZ3RPuKarxq6sRo%3D&attredirects=0
[9]:http://www.fieldtriptoolbox.org/tutorial/timefrequencyanalysis
[10]:http://www.ncbi.nlm.nih.gov/pubmed/18684772
[11]:http://www.ncbi.nlm.nih.gov/pubmed/8987794
[12]:http://martinos.org/mne/stable/auto_examples/time_frequency/plot_source_space_time_frequency.html#sphx-glr-auto-examples-time-frequency-plot-source-space-time-frequency-py
[13]:http://martinos.org/mne/stable/generated/mne.time_frequency.tfr_morlet.html#mne.time_frequency.tfr_morlet
[14]:http://www.ncbi.nlm.nih.gov/pubmed/18621027