Saya menjalankan transformasi wavelet kontinyu Morlet. Saya sudah mendapat wscalogram
sinyal dan sekarang saya ingin memplot freq-magnitude seperti gambar berikut., Tapi saya tidak tahu bagaimana melakukannya:
Saya telah menggunakan scal2freq
fungsi MATLAB untuk mengubah skala menjadi frekuensi semu. Saya juga memiliki beberapa frekuensi di sinyal saya yang memiliki rasio redaman yang besar (4%) sehingga tidak terlihat dengan baik di plot. Bagaimana saya bisa melebih-lebihkan mode yang sangat teredam ini?
Saya menggunakan MATLAB, ini kode saya:
% Import the text4.txt to matlab workspace. and save it under name "data"
t=linspace(0,30,301);
Fs=ceil(inv(t(2)-t(1)));
x=data(:,4); % use x=data(:,3),x=data(:,5) too. first column is time,second is refrence
wname = 'morl';
scales = 1:1:256;
coefs = cwt(x,scales,wname,'lvlabs');
freq = scal2frq(scales,wname,1/Fs);
surf(t,freq,abs(coefs));shading('interp');
axis tight; xlabel('Seconds'); ylabel('Pseudo-Frequency (Hz)');
axis([0 30 0 1 0 60])
xlabel('Time'); ylabel('Frequency');
figure;
sc=wscalogram('image',coefs,'scales',freq,'ydata',x);
hold on
Plot saya saat ini terlihat seperti ini:
frequency-spectrum
frequency
wavelet
Tukang listrik
sumber
sumber
Jawaban:
Memodifikasi kode Anda sedikit, tetapi tidak ada perubahan besar, dan saya mendapatkan hasil yang benar. Gunakan kode templat ini di sini, dan Anda seharusnya tidak melihat masalah. Saya mendapatkan hasil yang benar.
Untuk mendapatkan gambar di sisi kanan gambar pertama yang Anda pasang, itu hanyalah spektrum irisan waktu. Dengan kata lain, satu kolom dari matriks frekuensi-waktu Anda.
Sebagai contoh, kita mungkin mendapatkan matriks koefisien kuadrat berikut, dalam frekuensi vs. waktu:
Mari kita anggap kita ingin melihat spektrum untuk irisan waktu pada kolom 47. Kemudian, ini diberikan di sini:
Di sini, Anda kemudian melihat kekuatan koefisien, vs frekuensi, untuk irisan waktu yang sesuai dengan kolom 47.
sumber
Transformasi wavelet kontinu (CWT) adalah metode untuk analisis skala waktu . Ya, Anda membacanya dengan benar, skala , bukan frekuensi . Namun, dimungkinkan untuk memetakan skala ke frekuensi, dan bahkan cukup mudah. Karena Anda adalah pengguna MATLAB, Anda mungkin ingin menggunakan fungsi ini , yang melakukan hal berikut:
Seperti yang dapat Anda baca, frekuensi bukanlah frekuensi sebenarnya dalam sinyal, tetapi perkiraan. Jika Anda menginginkan frekuensi nyata, Anda harus menggunakan transformasi Fourier (STFT) jangka pendek.
Jadi, kapan harus menggunakan CWT? Sebagai prinsip umum, wavelet bekerja dengan baik ketika sinyal bersifat sementara (yaitu memiliki perubahan cepat).
EDIT: haha, saya tidak tahu apa yang saya lakukan di sini. maaf :-D benar-benar merindukan titik pertanyaan Anda. Baca saja judulnya ....
sumber
Tidak yakin apakah Anda masih membutuhkan bantuan ...
Jika Anda ingin frekuensi vs besarnya gunakan perintah "mesh / surf" untuk memplot koefisien.
Kemudian ubah orientasi plot sehingga Anda mendapatkan hasil yang Anda cari. Untuk ini lihat perintah "view".
sumber