Почему частотно-временная плоскость перевернута? - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь построить собственную реализацию кода для непрерывного вейвлет-преобразования Фурье. Но когда я сравниваю частотно-временной график, созданный с помощью моей функции, с частотно-временным графиком, созданным с помощью функции Matlab, время кажется обратным.

x=signal;
N=length(x);

ff=[14:1:29]; % frequency to analize
W=zeros(ff(end)-ff(1),N); % build matrix to insert CWT
m=1;

for i=1:length(ff)
f=ff(i); %frequency

osc=7.5;  % Morlet Factor   These are the wavelet parameters
sigmaf=f/osc % Frequency standard deviation
sigmat=1/(2*pi*sigmaf) % Time standard deviation

t=[-N/2:N/2-1];
A=1/sqrt(sigmat*sqrt(pi));
g=A*exp(1i*2*pi*f*t/fs).*exp(-(t/fs).^2/(2*(sigmat.^2))); % Morlet function

gconj=conj(g); %Take the conjugate 
wavf=fft(gconj,N); %Compute the  morlet fft
xf=fft(x,N); %Compute the signal fft
T=xf.*(wavf);  % Product of signal with morlet
W(m,:)=ifft(T,N); %Take the iift and add it in the matrix
m=m+1;
end

Для визуализации графика

imagesc(time,ff,abs(W).^2)
set(gca,'YDir','normal')

Это график CWT

enter image description here

Если я использую ctwt функцию Matlab

fmin=14;
fmax=29;
MorletFourierFactor = 4*pi/(6+sqrt(2+6^2));
s0=1/(MorletFourierFactor*fmax);
Ns=50;
ds=1/(Ns-1)*log2(fmax/fmin);
wname = 'morl';
SCA = {s0,ds,Ns};
zpd='zpd';
dt=1/EEG.srate;
cwtsig = cwtft({x,dt},'scales',SCA,'wavelet',wname);
Scales = cwtsig.scales.*MorletFourierFactor;
Freq = 1./Scales;
figure
imagesc(times,[],abs(cwtsig.cfs).^2);

enter image description here

Они действительно похожи, но их время изменилось, и я понятия не имею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...