Hãy nhớ rằng Biến đổi Wavelet không là gì ngoài các hoạt động lọc / tương quan cục bộ theo thời gian . Các biến đổi wavelet cung cấp một khung thống nhất để đi xung quanh Nguyên tắc không chắc chắn của Heisenberg mà Biến đổi Fourier phải chịu. Vì vậy, khi bạn hỏi "cài đặt của tôi phải là gì đối với băng thông và tần số trung tâm", bạn sẽ yêu cầu các tham số bộ lọc được cung cấp cho bạn. Không ai có thể cung cấp cho bạn các tham số bộ lọc trừ chính bạn và ứng dụng của bạn. Đây là lý do tại sao chúng là các tham số. :-)
Cụ thể hơn, cách chọn và của bạn phải liên quan đến bản chất của tín hiệu của bạn. Đầu tiên, một số giới hạn trước:FcFb
Biến đổi Wavelet không là gì ngoài các bộ lọc phù hợp mà bạn xây dựng, sao cho bạn có kết quả phù hợp nhất với 'tính năng' trong tín hiệu bạn quan tâm. Một bộ 'tính năng' mà bạn có thể xem xét sẽ là vùng lân cận tần số trung tâm và vùng lân cận băng thông. Một lần nữa, không ai có thể chọn những thứ đó cho bạn , bởi vì bạn cần biết những gì bạn đang tìm kiếm. Tuy nhiên, bạn có thể chọn một phạm vi tương xứng với những gì bạn mong đợi. (Đây thực sự là một trong những tính năng giúp Wavelet Transforms trở nên rất mạnh mẽ).
Các wavelet morlet được cho bởi chức năng sau đây:
Ψ ( t ,fc,Tp) = =1πTp---√ e-t2Tp e- j 2 πfct
Ở đây, là chỉ số thời gian tính bằng giây, là tần số trung tâm của bạn và đại diện cho cái mà tôi đã gọi là "Thông số chu kỳ". Kiểm tra phương trình trên. Lưu ý rằng sóng con morlet thực tế không có gì ngoài một hàm mũ phức tạp tập trung ở tần số , được hiển thị bởi hàm gaussian có nghĩa là 0, vớitfcTpfcσ= =Tp2--√
Do đó, để trả lời câu hỏi đầu tiên của bạn, tham số , phải được chọn sao cho nó ở hoặc gần tần số bạn muốn thẩm vấn.Fc
Về băng thông sóng con: Cái mà tôi gọi là ở đây là "Thông số kỳ" của bạn và điều này liên quan trực tiếp đến băng thông của bạn. Quay trở lại phương trình Morlet Wavelet và xem xét một kịch bản thay vì cửa sổ gaussian, chúng tôi đã sử dụng một cửa sổ hình chữ nhật. Trong Miền Fourier, chúng tôi đạt được một hàm chân thành do loại cửa sổ này và chúng tôi có thể nói rằng Băng thông Null-To-Null, , chỉ đơn giản là: , ( trong băng thông).TpBB =2Tp e r i o d
Hình dưới đây minh họa điều này cho một số mũ phức tạp nằm ở Hz, với các giá trị khác nhau :fc= 2Tp e r i o d
Bạn có thể thấy rõ rằng khi phạm vi thời gian được tăng lên, băng thông giảm. Đây là bản chất nghịch đảo của mối quan hệ tần số thời gian. Nếu bạn muốn sử dụng giả sóng này, bạn sẽ chọn là gì? Câu trả lời sẽ là "Dù tín hiệu quan tâm của tôi bị treo ở đâu". Trên thực tế, đây chính xác là những gì được thực hiện trong Short-Fourier-Transform, (STFT), mặc dù người ta sẽ chọn một cửa sổ thông minh hơn thay vì ô tô.Tp e r i o dTp e r i o d
Bây giờ chúng ta hãy kiểm tra lại phương trình Morlet Wavelet và chèn lại hàm cửa sổ gaussian, với . Nếu chúng ta thực hiện điều này, chúng ta sẽ nhận được các sơ đồ miền thời gian sau và các Biến đổi Fourier rời rạc (DFT) tương ứng của Wavelets Morlet:σ= =Tp2--√
Một lần nữa, hãy chú ý đến mức độ - khi phương sai của cửa sổ gaussian che mờ theo cấp số nhân phức tạp, băng thông trong Miền Fourier giảm. (Trong trường hợp này, chúng ta có hành vi bên thùy đẹp hơn nhiều, nhưng điều này là tiếp tuyến). Trong mọi trường hợp, bạn có thể một lần nữa xem cách chúng tôi có mối quan hệ nghịch đảo giữa tham số , (hoặc tham số độ lệch chuẩn của gaussian của bạn, tùy theo bạn) và băng thông của bộ lọc tương ứng.Tp
Phải làm gì với kiến thức này: Bây giờ bạn đã hiểu làm thế nào băng thông có liên quan đến chức năng tạo bóng gaussian được nhúng trong Wavelet Morlet. Do đó, đối với bất kỳ tín hiệu nào bạn có, bạn chỉ cần lấy DFT của tín hiệu của mình và quan sát băng thông của nó ở các tần số trung tâm khác nhau. Sau đó, điều chỉnh các tham số và của Wavelet Morlet của bạn cho phù hợp, sao cho chức năng DFT của bộ lọc Morlet chồng chéo trực tiếp chức năng DFT của tín hiệu mẫu của bạn. Đây là cách bạn có thể thiết lập các tham số của bạn.x [ n ]σfc
Mã để tạo các ô trên là ở đây:
clear all;
fS = 500;
tStart = -4;
tStop = 4;
timeVector = linspace(tStart,tStop, (tStop-tStart)*fS );
fCenter = 2;
tP = [0.2 1 3];
exps = length(tP);
figure(1); clf(1);
figure(2); clf(2);
for ii = 1:exps
tPeriod = tP(ii);
timeMask = zeros(1,length(timeVector));
timeMask((timeVector >= -tPeriod/2) & (timeVector <= tPeriod/2)) = 1;
psiFakeWavelet = exp(2*1i*pi*fCenter.*timeVector).*timeMask;
psiWavelet = ((pi*tP(ii))^(-0.5)).*exp(2*1i*pi*fCenter.*timeVector).*exp(-timeVector.^2/tP(ii));
%Demonstrating the Rectangular Window
figure(1);
subplot(3,2,2*ii-1);
plot(timeVector,real(psiFakeWavelet), timeVector,imag(psiFakeWavelet));
ylim([-1.2 1.2])
xlabel('Time / Seconds');
title(sprintf('Morlet Wavelet, T_{period} = %2.2f, f_c = %2.2f Hz', tPeriod, fCenter));
input = psiFakeWavelet;
Nfft = 10 * 2^nextpow2(length(input));
psd = 20.*log10(fftshift(abs(fft(input,Nfft))));
freqs = [0:Nfft - 1].*(fS/Nfft);
freqs(freqs >= fS/2) = freqs(freqs >= fS/2) - fS;
freqs = fftshift(freqs);
figure(1);
subplot(exps,2,2*ii);
plot(freqs, psd);
xlim([-10 15]);
xlabel('Frequency / Hz');
title (sprintf('PSD, Null-Null-BW = %2.2f Hz', 2/tPeriod));
%Demonstrating the Morlet Wavelet
figure(2);
subplot(3,2,2*ii-1);
plot(timeVector,real(psiWavelet), timeVector,imag(psiWavelet));
ylim([-1.2 1.2])
xlabel('Time / Seconds');
title(sprintf('Morlet Wavelet, T_{period} = %2.2f, f_c = %2.2f Hz', tPeriod, fCenter));
input = psiWavelet;
Nfft = 10 * 2^nextpow2(length(input));
psd = 20.*log10(fftshift(abs(fft(input,Nfft))));
freqs = [0:Nfft - 1].*(fS/Nfft);
freqs(freqs >= fS/2) = freqs(freqs >= fS/2) - fS;
freqs = fftshift(freqs);
figure(2);
subplot(exps,2,2*ii);
plot(freqs, psd);
xlim([-10 15]);
xlabel('Frequency / Hz');
title ('Wavelet PSD');
end