Jak wykreślić wykres częstotliwości w funkcji transformaty falkowej?


14

Korzystam z ciągłej transformacji falkowej Morleta. Mam wscalogramsygnał i teraz chcę wykreślić częstotliwość freq jak na poniższym obrazku., Ale nie wiem jak to zrobić:

wprowadź opis zdjęcia tutaj

Użyłem scal2freqfunkcji MATLAB do konwersji skal na pseudo częstotliwości. Mam też w swoim sygnale częstotliwości, które mają duży współczynnik tłumienia (4%), więc nie są dobrze widoczne na wykresie. Jak mogę wyolbrzymić te wysoce tłumione tryby?

Korzystam z MATLAB, oto moje kody:

% 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 

Moja obecna fabuła wygląda następująco:

wprowadź opis zdjęcia tutaj


Jaką formę mają dane transformacji falkowej?
Jim Clay

Cześć @JimClay! Nie jestem pewien, czy rozumiem twoje pytanie. ale jeśli masz na myśli to, jak to wygląda, to jest jak drugi link, który utrzymałem na pytanie. i chcę fabułę jak pierwszy link. (2nd [myplot]) cubeupload.com/im/bSSlMI.jpg 1st [pożądany]) cubeupload.com/im/KbhGMI.jpg oto mój sygnał < fileswap.com/dl/Lwf7n96fAt/test4.txt.html > tutaj jest mój Mfile < fileswap.com/dl/gMrslBFAdb/mfile.txt.html > pozdrawiam.
Electricman

Nie jestem do końca pewien, jakie jest twoje pytanie ...
Tarin Ziyaee

Cześć @ user4619; Spójrz na pierwszą fabułę. po prawej stronie skalogramu falki widzisz wykres [częstotliwość freq] [uzyskany przez matlab]. drugie zdjęcie to mój falkowy skalogram. ale nie wiem jak wykreślić [częstotliwość freq] jak prawa strona pierwszego wykresu. jakaś pomoc, proszę?
Electricman

@Electricman Spektrogram to nie to samo, co skalogram. Jeśli idziesz na skalogramie, nie ma częstotliwości VS czas, tylko skaluj VS czas. Więc który dokładnie robisz?
Tarin Ziyaee

Odpowiedzi:


4

Trochę modyfikuję twój kod, ale nie wprowadzam większych zmian, a ja i tak otrzymuję poprawne wyniki. Użyj tego kodu szablonu tutaj i nie powinieneś mieć żadnych problemów. Otrzymuję prawidłowe wyniki.

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

Aby uzyskać cyfrę po prawej stronie pierwszego umieszczonego obrazu, jest to po prostu spektrum odcinka czasu. Innymi słowy, jedna kolumna macierzy częstotliwości i czasu.

Na przykład, możemy uzyskać następującą macierz kwadrat-współczynnik, w funkcji częstotliwości w funkcji czasu:

wprowadź opis zdjęcia tutaj

Załóżmy zatem, że chcemy spojrzeć na spektrum dla przedziału czasowego w kolumnie 47. Następnie podaje się tutaj:

wprowadź opis zdjęcia tutaj

Tutaj widać moc współczynników w funkcji częstotliwości dla przedziału czasu odpowiadającego kolumnie 47.


Dziękujemy za modyfikację kodu. Ale nie otrzymałem jeszcze odpowiedzi na moje pytanie. Pytanie brzmi: Jak wykreślić wielkość Freqa lub skalę [bez różnicy]. Chcę fabułę jak prawa strona pierwszego zdjęcia. [To jest pytanie]. z góry dzięki
Electricman

1
@Electricman Wykres po prawej stronie jest po prostu jedną kolumną macierzy Częstotliwość vs. Czas.
Tarin Ziyaee

- @ user4619 To nie jest częstotliwość vs. Nie jestem pewien, czy ma dokładnie cefe lub wielkość, ale oczywiście jest proporcjonalny do cofów lub cofów ^ 2. tnx
Electricman

@Electricman Proszę zobaczyć zmiany. Czy to jest teraz jaśniejsze?
Tarin Ziyaee

- @ user4619 Działa. Dziękuję za odpowiedź. Umieszczam mały kod na końcu pliku mfile. i otrzymałem taki sam wykres jak prawa strona wspomnianego wykresu. cof2 = abs (coefs). ^ 2; cof2trans = cof2 '; maxmods = max (cof2trans); postać; oś działki (maxmods, freq) ([0 60 0 1]) Z poważaniem
Electricman

4

Ciągła transformata falkowa (CWT) jest metodą analizy w skali czasu . Tak, czytasz to poprawnie, skaluj , a nie częstotliwość . Można jednak mapować wagi na częstotliwości, a nawet dość łatwo. Ponieważ jesteś użytkownikiem MATLAB, prawdopodobnie będziesz chciał skorzystać z tej funkcji , która wykonuje następujące czynności:

F = scal2frq (A, „wname”, DELTA) zwraca pseudo-częstotliwości odpowiadające skalom podanym przez A, funkcję falkową „wname” (więcej informacji można znaleźć w wavefun) i okres próbkowania DELTA.

Jak można przeczytać, częstotliwości nie są rzeczywistymi częstotliwościami w sygnale, ale przybliżeniami. Jeśli chcesz rzeczywistych częstotliwości, powinieneś użyć krótkotrwałej transformaty Fouriera (STFT).

Kiedy więc należy użyć CWT? Zasadniczo falki działają dobrze, gdy sygnały są przejściowe (tj. Mają szybkie zmiany).

EDYCJA: haha, nie wiem co tu robię. przepraszam :-D całkowicie nie trafiłem w sedno twojego pytania. Po prostu przeczytaj tytuł ...


@ faluj Twoje informacje są poprawne. No i co z tego? Chcę mieć fabułę jak prawa strona pierwszego zdjęcia. częstotliwość a wielkość. i jest OK, jeśli dostanę skale względem wielkości, o ile mogę używać scal2freq.
Elektryk

„Jeśli chcesz rzeczywistych częstotliwości, powinieneś użyć krótkotrwałej transformacji Fouriera (STFT)”. Falka Morleta ma częstotliwość w taki sam sposób, jak częstotliwość STFT w oknie Gaussa. „Atomy” obu transformacji są takie same.
endolith,

0

Nie jestem pewien, czy nadal potrzebujesz pomocy ...

Jeśli chcesz ustawić częstotliwość w funkcji wielkości, użyj polecenia „mesh / surf”, aby wykreślić współczynniki.

Następnie zmień orientację działki, aby uzyskać oczekiwany wynik. W tym celu zobacz polecenie „view”.


Dzięki, rozwiązałem ten problem kilka miesięcy temu i opublikowałem swoje wyniki. Ale następnym razem wypróbuję twoją alternatywę. Ale proszę przenieś swoją odpowiedź do komentarza. powodzenia. @ asilva732
Electricman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.