Dalgacık dönüşümü büyüklüğüne karşı frekansı nasıl çizebilirim?


15

Morlet sürekli dalgacık dönüşümü yapıyorum. wscalogramSinyalim var ve şimdi aşağıdaki resimdeki gibi frekans büyüklüğünü çizmek istiyorum, ancak nasıl yapılacağını bilmiyorum:

resim açıklamasını buraya girin

scal2freqÖlçekleri sahte frekanslara dönüştürmek için MATLAB işlevini kullandım . Ayrıca sinyalimde büyük bir sönümleme oranına (% 4) sahip bazı frekanslar var, bu yüzden arsada iyi görünmüyorlar. Bu yüksek sönümlü modları nasıl abartırım?

MATLAB kullanıyorum, işte kodlarım:

% 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 

Şu anki planım şöyle:

resim açıklamasını buraya girin


Dalgacık dönüşüm verileriniz hangi formu alıyor?
Jim Clay

Merhaba @JimClay! Sorunuzu anladığımdan emin değilim. ama nasıl göründüğünü kastediyorsanız, bu soruda tuttuğum 2. bağlantı gibi. ve 1. link gibi bir komplo istiyorum. (2. [myplot]) cubeupload.com/im/bSSlMI.jpg 1. [istenen]) cubeupload.com/im/KbhGMI.jpg işte benim sinyalim < fileswap.com/dl/Lwf7n96fAt/test4.txt.html > işte Mfile < fileswap.com/dl/gMrslBFAdb/mfile.txt.html > saygılarımla.
Electricman

Sorunuzun ne olduğundan gerçekten emin değilim ...
Tarin Ziyaee

Merhaba @ user4619; İlk plana bak. dalgacık skalogramının sağ tarafında [matlab tarafından elde edilen] bir grafik [frekans-büyüklüğü] görürsünüz. ikinci resim benim dalgacık skalogramım. ama ilk grafiğin sağ tarafı gibi [freq-magnitude] nasıl çizileceğini bilmiyorum. herhangi bir yardım plz?
Electricman

@Elektrikçi Bir spektrogram bir skalogram ile aynı değildir. Bir skalograma gidiyorsanız, frekans VS zamanı yoktur, sadece VS zamanını ölçeklendirir. Yani tam olarak hangisini yapıyorsun?
Tarin Ziyaee

Yanıtlar:


4

Kodunuzu biraz değiştiriyoruz, ancak büyük değişiklikler yok ve her iki şekilde de doğru sonuçlar alıyorum. Bu şablon kodunu burada kullanın ve herhangi bir sorun görmemeniz gerekir. Doğru sonuçları alıyorum.

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

İlk görüntünün sağ tarafındaki rakamı elde etmek için, bu sadece zaman dilimi spektrumudur. Başka bir deyişle, frekans-zaman matrisinizin bir sütunu.

Örneğin, frekansa göre zamana göre aşağıdaki kare katsayılı matrisi alabiliriz:

resim açıklamasını buraya girin

Diyelim ki sütun 47'deki zaman dilimi spektrumuna bakmak istiyoruz. Sonra, bu burada verilmiştir:

resim açıklamasını buraya girin

Burada, 47. sütuna karşılık gelen zaman dilimi için katsayıların frekansa karşı gücünü görürsünüz.


Kodu değiştirdiğiniz için teşekkür ederiz. Ama soruma henüz bir cevap alamadım. Soru Frek-büyüklük veya ölçek-büyüklük [nasıl bir fark yok? İlk resmin sağ tarafı gibi bir komplo istiyorum. şimdiden teşekkürler
Electricman

1
@Elektrikçi Sağ taraftaki grafik, Frekans VS Zaman matrisinizin bir sütunudur.
Tarin Ziyaee

- @ user4619 Frek ve zaman değil, zaman aralığı 0-20 ve frekans aralığı 0-2,5, ancak sağ taraftaki grafik frek ve büyüklüktür. Ben tam olarak onun coefs veya büyüklüğü emin değilim ama tabii ki onun kafeler veya kafeler ile orantılı ^ 2. tnx
Electricman

@Elektrikçi Lütfen düzenlemelere bakınız. Şimdi daha net mi?
Tarin Ziyaee

- @ user4619 Çalışır. Cevabınız için teşekkürler. Mfile sonuna küçük bir kod koydum. ve söz konusu arsanın sağ tarafı ile aynı arsaya sahipti. cof2 = abs (coefs) ^ 2.; cof2trans = cof2' ; maxmods = maks (cof2trans); Şekil; komplo (maxmods, frek) ekseni ([0 60 0 1]) Saygılarımla
Electricman

4

Sürekli dalgacık dönüşümü (CWT), zaman ölçeği analizi için bir yöntemdir . Evet, doğru okudunuz , sıklığı değil ölçeği . Ancak, ölçekleri frekanslara ve hatta oldukça kolay bir şekilde eşleştirmek mümkündür. Bir MATLAB kullanıcısı olduğunuzdan, muhtemelen aşağıdakileri yapan bu işlevi kullanmak isteyeceksiniz :

F = scal2frq (A, 'wname', DELTA), A tarafından verilen ölçeklere karşılık gelen sözde frekansları, dalgacık fonksiyonu 'wname' (daha fazla bilgi için dalga kaynağına bakın) ve DELTA örnekleme periyodunu döndürür.

Okuduğunuz gibi, frekanslar sinyaldeki gerçek frekanslar değil, yaklaşık değerlerdir. Gerçek frekansları istiyorsanız, kısa süreli Fourier dönüşümünü (STFT) kullanmalısınız.

Peki, CWT ne zaman kullanılmalıdır? Genel bir ilke olarak, sinyaller geçici olduğunda (yani hızlı değişimler olduğunda) dalgacıklar iyi çalışır .

EDIT: haha, burada ne yaptığımı bilmiyorum. özür dilerim: - Sorunuzun noktasını tamamen kaçırdım. Sadece başlığı oku ....


@ dalga bilgileri doğru. Ama ne olmuş yani? Sadece ilk resmin sağ tarafı gibi bir komploya sahip olmak istiyorum. frekans vs büyüklük. ve scal2freq kullanabildiğim sürece ölçeklere karşı büyüklük alırsam sorun olmaz.
Electricman

"Gerçek frekansları istiyorsanız, kısa süreli Fourier dönüşümü (STFT) kullanıyor olmalısınız." Morlet dalgacık , Gauss pencereli STFT'nin frekansına sahip olduğu gibi frekansa sahiptir. Her iki dönüşümün "atomları" aynıdır.
endolit

0

Hala yardıma ihtiyacınız olup olmadığından emin değilim ...

Frekans ve büyüklük istiyorsanız, katsayıları çizmek için "mesh / surf" komutunu kullanın.

Sonra arsa yönünü değiştirin, böylece aradığınız sonucu elde edersiniz. Bunun için "görünüm" komutuna bakın.


Teşekkürler, bu sorunu birkaç ay önce çözdüm ve sonuçlarımı yayınladım. Ama bir dahaki sefere alternatifinizi deneyeceğim. Ama lütfen cevabınızı yorum yerine taşıyın. iyi şanslar. @ asilva732
Electricman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.