• 締切済み

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);