Bagaimana saya bisa merencanakan frekuensi vs besarnya transformasi wavelet?

14

Saya menjalankan transformasi wavelet kontinyu Morlet. Saya sudah mendapat wscalogramsinyal dan sekarang saya ingin memplot freq-magnitude seperti gambar berikut., Tapi saya tidak tahu bagaimana melakukannya:

masukkan deskripsi gambar di sini

Saya telah menggunakan scal2freqfungsi 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:

masukkan deskripsi gambar di sini

Tukang listrik
sumber
Bagaimana bentuk data transformasi wavelet Anda?
Jim Clay
Hai @JimClay! Saya tidak yakin apakah saya mengerti pertanyaan Anda. tetapi jika Anda maksud seperti apa, itu seperti tautan ke-2 yang saya pertahankan pada pertanyaan itu. dan saya ingin plot seperti tautan 1. (2 [myplot]) cubeupload.com/im/bSSlMI.jpg 1 [diinginkan]) cubeupload.com/im/KbhGMI.jpg di sini adalah sinyal saya < fileswap.com/dl/Lwf7n96fAt/test4.txt.html > di sini adalah salamku Mfile < fileswap.com/dl/gMrslBFAdb/mfile.txt.html > salam.
Electricman
Saya tidak begitu yakin apa pertanyaan Anda ...
Tarin Ziyaee
Hai @ user4619; Lihatlah plot pertama. Anda melihat plot [freq-magnitude] di sisi kanan skalogram wavelet [yang diperoleh oleh matlab]. gambar kedua adalah skalogram wavelet saya. tapi saya tidak tahu bagaimana merencanakan [freq-magnitude] seperti sisi kanan plot pertama. ada bantuan, tolong?
Electricman
@Electricman Spektogram tidak sama dengan skalogram. Jika Anda akan skalogram, tidak ada frekuensi VS waktu, hanya skala VS waktu. Jadi yang mana tepatnya yang Anda lakukan?
Tarin Ziyaee

Jawaban:

4

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.

clear all; 
t=linspace(0,30,301); 
Fs = (inv(t(2)-t(1))); 
x=randn(100,1);  
wname = 'morl'; 
scales = 1:1:256; 
chefs = cwt(x,scales,wname,'lvlabs');

freq = scal2frq(scales,wname,1/Fs);

figure; 
coefsSquared = abs(coefs).^2; 
imagesc(coefsSquared); 
grid off;

%Pick one of the columsn to plot: 
figure; 
plot(coefsSquared(:,47))

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:

masukkan deskripsi gambar di sini

Mari kita anggap kita ingin melihat spektrum untuk irisan waktu pada kolom 47. Kemudian, ini diberikan di sini:

masukkan deskripsi gambar di sini

Di sini, Anda kemudian melihat kekuatan koefisien, vs frekuensi, untuk irisan waktu yang sesuai dengan kolom 47.

Tarin Ziyaee
sumber
Terima kasih telah memodifikasi kode. Tapi saya belum mendapatkan jawaban untuk pertanyaan saya. Pertanyaannya adalah Bagaimana saya bisa merencanakan Freq-magnitude atau skala-magnitude [tidak ada perbedaan]. Saya ingin plot seperti sisi kanan gambar pertama. [Itu dipertanyakan]. terima kasih sebelumnya
Electricman
1
@Electricman Plot di sisi kanan hanyalah satu kolom dari matriks Frekuensi VS Waktu Anda.
Tarin Ziyaee
- @ user4619 Ini bukan Frekuensi vs waktu, Rentang waktu 0-20 dan rentang frekuensi 0-2.5 tetapi plot sisi kanan adalah Frekuensi vs Frekuensi. Saya tidak yakin itu persis koefisien atau besarnya tetapi jelas proporsinya dengan cofes atau cofes ^ 2. tnx
Electricman
@Electricman Silakan lihat hasil edit. Apakah sekarang lebih jelas?
Tarin Ziyaee
- @ user4619 Berhasil. Terima kasih atas jawaban anda. Saya menaruh sedikit kode di akhir mfile. dan mendapatkan plot yang sama dengan sisi kanan plot yang disebutkan. cof2 = abs (coefs). ^ 2; cof2trans = cof2 '; maxmods = max (cof2trans); angka; sumbu plot (maksmod, freq) ([0 60 0 1]) Salam hangat
Electricman
4

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:

F = scal2frq (A, 'wname', DELTA) mengembalikan frekuensi semu yang sesuai dengan skala yang diberikan oleh A, fungsi wavelet 'wname' (lihat wavefun untuk informasi lebih lanjut) dan periode sampling DELTA.

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 ....

wav
sumber
@ gelombang informasi Anda sudah benar. Tapi lalu bagaimana? Saya hanya ingin memiliki plot seperti sisi kanan gambar pertama. freq vs besarnya. dan tidak apa-apa jika saya mendapatkan skala vs besarnya selama saya bisa menggunakan scal2freq.
Electricman
"Jika Anda menginginkan frekuensi nyata, Anda harus menggunakan transformasi Fourier (STFT) jangka pendek." Morlet wavelet memiliki frekuensi dengan cara yang sama dengan STFT berjendela Gaussian yang memiliki frekuensi. "Atom" dari kedua transformasi adalah sama.
endolith
0

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".

asilva732
sumber
Terima kasih, saya memecahkan masalah itu beberapa bulan yang lalu dan menerbitkan hasil saya. Tapi saya akan mencoba alternatif Anda lain kali. Tapi, tolong pindahkan jawaban Anda ke tempat komentar. semoga berhasil. @ asilva732
Electricman