Morlet 小波函数的一种定义由下式给出:
该方程的傅里叶变换为: (这样对吗)?
首先,我尝试FFT
在 Matlab 中逐个函数绘制 Morlet 函数的 FFT,然后我直接绘制了傅里叶变换函数。我预计会看到相同的图,但不幸的是它们的大小不同(为什么?)。我发布了情节和我的代码,你知道为什么会这样吗?我的代码有问题吗?或者得到的傅里叶变换有什么问题?或者Matlab内置FFT
函数有什么问题?
我编写了这个脚本来获取这些图:
clear all;
fS = 500;
tStart= -4;
tStop= 4;
timeVector = linspace(tStart,tStop, (tStop-tStart)*fS );
fC = 2;
fB=2;
timeMask = zeros(1,length(timeVector));
timeMask((timeVector >= -fB/2) & (timeVector <= fB/2)) = 1;
psiWavelet = ((pi*fB))^(-0.5).*... % Morlet function
exp(2*1i*pi*fC.*timeVector).*exp(-timeVector.^2/fB); % Morlet function
% FFT plot by matlab bulit-in FFT function
Nfft =10*2^nextpow2(length(timeVector));
FFT =fftshift(abs(fft(psiWavelet,Nfft)));
freqs=[0:Nfft - 1].*(fS/Nfft);
freqs(freqs >= fS/2) = freqs(freqs >= fS/2) - fS;
freqs=fftshift(freqs);
figure(2);
subplot(1,2,1)
plot(freqs, FFT);
xlim([-1 5]);
xlabel('Frequency / Hz');
title (sprintf('Fourier Transform'));
% FFT plot by its direct fourier transfrom function
f_psi=exp(-(pi^2*fB)*(freqs-fC).^2);
subplot(1,2,2)
plot(freqs,f_psi)
xlim([-1 5]);