• 締切済み

matlabでのwavwlet解析について

matlabでのwavwlet解析を行いたいと思っているのですが、うまくできません。 式的には以下でいいと思うのですが、 wavelet = ifft[fft(g(t))*fft(fai(t)] g(t):信号、fai(t):複素モアレー関数。 複素モアレー関数をどうやってmatlabで関数にすればいいいのかわかりません。複素モアレー関数には変数としてt',a(1/aが周波数に相当)の二つがあると思うのですが'Function'を使って関数にする場合どうやってすればいいのでしょうか?

みんなの回答

  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

fft(fai(t)) の部分を関数で書きましょう. 複素morlet のフーリエ変換 psi_hat を数式で計算して. %%%% 周波数方向の上限下限  [wmin, wmax] %%%% 周波数刻み dw Omega = wmin:dw:wmax; %% 周波数空間全体 function [Z] = fftcmorlet(a, Omega) %%%% スケール a Omega = wmin:dw:wmax %% 周波数空間全体 Z = psi_hat(a*Omega); %% 複素morlet のフーリエ変換 psi_hat Z = Z / norm(Z); %% L2 ノルムの正規化 wavelet toolbox でも使えば.

shuntaro021
質問者

補足

回答有難うございます。 functionを使わずに作ってみたんですけど、出てくる結果がなんか違うようなんですよね。もしwaveletに詳しいのであれば助言お願いします。 clear all d = 0.1; %% 周波数刻み w = 0.1:d:10;%%%周波数 a = 1./w;%%%スケール N = 100;  t =(1/d)*(0.1:N)/N; g = sin(2*pi*3*t-5); %%信号(例) g = meshgrid(g);  %%cmorlet関数が二次元の行列であるため行列に変換 fftg = fft2(g,N,N); %%%二次元のフーリエ変換。 [ww,aa] = meshgrid(w,a); Z = sqrt(aa).*exp(2*pi*ww.*aa-((2*pi)^2)/2-(1/2)*(ww.*aa).^2);%%%%cmorlet関数 F = fftg.*Z; ifftF = ifft2(F,N,N); ifftFmag = abs(ifftF); [tt,aa] = meshgrid(t,a); surf(tt,aa,ifftFmag);

関連するQ&A

  • MATLABでFFTを行うには

    こんばんは。 ある信号のスペクトラムを解析したいと考えています。 MATLABを用いてそれを行いたいのですが、 FFTができるような関数ってもともとMATLABに用意されて いるのでしょうか? 教えてください。よろしくお願いいたします。

  • MATLABによるWavelet解析について

    卒業研究において、心拍情報をウェーブレット解析することを考えています。 それに伴い、文献・Web等でがんばってきましたが、数学の苦手な自分の頭では やはりまかないきれませんでした… 具体的にどのようなウェーブレットの種類を利用し、どのようにそのデータを 観察・評価を行えば良いのか分かりません。 MATLAB7.0のWaveletToolboxを利用しています。 解析対象は一般的な心拍計から得た心拍情報(R-R間隔をmsで計測したもの)です。 目的としましては、その心拍情報を解析することで、 周波数ごとに解析することでわかるといわれている 被験者の意識状態(緊張状態か、リラックス状態かなど)を 時間情報と共にみたいと考えております。 何とか解析を試みようとオンラインヘルプとその例題を読みつつ WaveletToolboxを触っています。使い方まではなんとか分かるようになったのです。 が、具体的な解析作業ということとなると、 どのようなウェーブレットの種類を選択し、最適なレベルはいくつなのか、 そしてなにより、解析結果として現れる図をどのように見ればよいか具体的に分かりません。 一次元離散ウェーブレット変換をしたときに Approximationが低周波成分に対応し、Detailが高周波に対応しているということですので、 自分が見たいのはたとえば0.1Hz等ですのでApproximationを評価すれば良いと思っています。 そのような場合に特定の周波数がどの位置(時間)であらわれているかを観測するには どうすればよいのでしょうか。 本来ならばおそらく、文献を読んで分かることなのかもしれませんが、 幾分頭が悪く、何とか自分でも分かる文献はないかともがきましたが 藁をもつかむ思いで質問させていただきました。 どなたか分かる方、MATLABというよりWavelet解析について分かる方もふくめ どうぞよろしくお願いいたします。

  • MATLABでのFFTについて

    MATLAB という汎用数値解析プログラムを使って、人でとった心電図のRR間隔の周波数解析を試みております。R波の検出し、512ポイントのRR間隔(RRI)のデータを得ました{R波をとるときの時間をtとし、RRI(n) = t(n+1)-t(n)}。ここからデータを補完してリサンプリングし、データポイントを2のべき乗にそろえ、FFTに持っていきたいと思います。 そこで質問は、#1.RRIを得る時点で、512ポイントにする意味はありますか? #2.最終的にFFTに行く前に2のべき乗のポイント数になれば問題ないでしょうか?

  • MATLABによるFFT

    MATLABのfft関数を使用して,フーリエ変換してPSDを算出すると,スペクトルの周波数領域での積分値が元データの二乗平均値と一致しないのですが,原因は何が考えられるでしょうか?FFTの出力がフーリエ係数であれば一致するはずなのですが.

  • MATLABについてお聞きしたいです。

    MATLABについてお聞きしたいです。 現在勉強しているのですが、プログラミング初心者なので…。 MATLABでwavファイルの書き込みについてです。 周波数1000Hz, 0.5秒,サンプリング周波数22050Hz の設定にしてwavファイルで保存したく… f=1000; > A=0.5; > Fs=22050; > wavwrite(MyFunc_2(1000,0.5,22050),'sin1000'); という設定にして、保存したのですが、録音時に流れた音と録音された音が違うのです。 ファンクションMファイルは… function y=MyFunc_2(f,A,Fs) %Fs=44100; d=1/Fs; t=0:d:2; %f=440; %A=0.1; y=A*sin(2*pi*f*t); wavplay(y,Fs) このような設定にしています。 問題解決への協力よろしくお願いします。

  • 解析接続について

    複素数 z を変数とし、無限級数によって定義される関数 f(z)=1/(1-z)  (定義域|z|<1) を考えると、この関数は、Wikipedia( http://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E6%8E%A5%E7%B6%9A ) に記されている様に解析接続されることはわかります。 しかしながら、関数 g(z)=1/(1-z)  (定義域|z|≦1/2) で定義された関数g(z) が、複素平面の定義域上で正則な関数、h(z)=2/3  (定義域z≦-1/2) に解析接続できない理由がよくわかりません。(一致の定理が成り立つ理由・状況などに関することなど) もしおわかりの方がおられれば、お教え頂けないでしょうか?

  • MATLABの関数で配列の要素を返す方法

    現在MATLABについて勉強しているのですが、関数(function)を用いて配列の値を返す方法が分からず困っています。 関数で定義した配列A(m行n列)を用いて、メイン関数で配列の要素Aijを呼び出す、ということがしたいのです。 function y=Func(x)等で1変数や他変数の入出力の仕方は分かります。 どなたか初心者でも理解できるようご教授お願い致します。

  • 複素関数

    ωを複素変数としたとき、関数G(ω)が解析的でない、 もう少し言うと複素平面における上半面(下半面)で解析的 でないとはどういう意味なのでしょうか? 具体的な例をあげて下さると助かります。

  • FFT解析について

     FFT解析について不明な点があります。 例えばf(t)=2sinωt という時間関数があったとします。  これをFFT解析してF(ω)-ωグラフにしたとします。この時、ω=ωに対してのみF(ω)という出力が得られると思うのですが、この時F(ω)はf(t)=2sinωtの振幅の2になるのでしょうか?  フーリエ変換の式では、e^(-jωt)とf(t)を積分した値が、F(ω)になるので感覚的に考えても違うのかな と思っているのですが。  

  • 脳波の解析手法について教えてください

    自分は現在卒業研究で、脳波を解析するソフトを作成しています 現在使用している処理は、さまざまな窓関数を用いたFFTのみなのですが、歯を噛んだ時などに出る高周波数についてのスペクトルが顕著に表れません 脳波形に付属されていたソフトを使うと同じ動作をした時にちゃんと高周波が検出されます 付属されていたソフトもまた窓関数とFFTしか使用していないようなのですが やはり、これだけの処理では脳波の解析には不十分なのでしょうか? なにか脳波処理に常識的にしなくてはいけない前処理や効果的な解析方法があったらヒントだけでもいいので教えてほしいです 使用している脳波計は額につける型の1チャンネルのものです よろしくお願いします

専門家に質問してみよう