Ich verwende eine kontinuierliche Wavelet-Transformation nach Morlet. Ich habe ein wscalogram
Signal und möchte jetzt die Frequenz wie im folgenden Bild darstellen, aber ich weiß nicht, wie ich es machen soll:
Ich habe die scal2freq
MATLAB-Funktion verwendet, um Skalen in Pseudofrequenzen umzuwandeln. Außerdem habe ich einige Frequenzen in meinem Signal, die ein großes Dämpfungsverhältnis (4%) aufweisen, sodass sie in der Darstellung nicht gut sichtbar sind. Wie kann ich diese stark gedämpften Modi übertreiben?
Ich benutze MATLAB, hier sind meine Codes:
% 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
Meine aktuelle Handlung sieht so aus:
frequency-spectrum
frequency
wavelet
Elektriker
quelle
quelle
Antworten:
Wenn Sie Ihren Code ein wenig ändern, aber keine größeren Änderungen vornehmen, erhalte ich in beiden Fällen die richtigen Ergebnisse. Verwenden Sie diesen Vorlagencode hier, und Sie sollten keine Probleme sehen. Ich bekomme die richtigen Ergebnisse.
Um die Abbildung auf der rechten Seite des ersten von Ihnen erstellten Bildes zu erhalten, ist dies einfach das Zeitscheibenspektrum. Mit anderen Worten, eine Spalte Ihrer Frequenz-Zeit-Matrix.
Zum Beispiel könnten wir die folgende Quadratkoeffizientenmatrix in Frequenz vs. Zeit erhalten:
Nehmen wir an, wir wollen das Spektrum für die Zeitscheibe in Spalte 47 betrachten. Dann ist dies hier gegeben:
Hier sehen Sie dann die Potenz der Koeffizienten gegenüber der Frequenz für die Zeitscheibe entsprechend Spalte 47.
quelle
Die kontinuierliche Wavelet-Transformation (CWT) ist eine Methode zur Zeitskalenanalyse . Ja, Sie haben es richtig gelesen, skalieren , nicht die Frequenz . Es ist jedoch möglich, die Skalen auf Frequenzen abzubilden, und dies sogar recht einfach. Da Sie ein MATLAB-Benutzer sind, möchten Sie wahrscheinlich diese Funktion verwenden , die folgende Aufgaben ausführt:
Wie Sie lesen können, handelt es sich bei den Frequenzen nicht um die tatsächlichen Frequenzen im Signal, sondern um Näherungswerte. Wenn Sie die reellen Frequenzen wollen, sollten Sie die Kurzzeit-Fourier-Transformation (STFT) verwenden.
Wann sollte man das CWT verwenden? Im Allgemeinen funktionieren Wavelets gut, wenn die Signale transient sind (dh haben schnelle Änderungen).
EDIT: haha, ich weiß nicht was ich hier mache. sorry :-D habe den Punkt deiner Frage komplett verpasst. Lies einfach den Titel ...
quelle
Nicht sicher, ob Sie noch Hilfe benötigen ...
Wenn Sie Frequenz oder Größe wünschen, verwenden Sie einen "mesh / surf" -Befehl, um die Koeffizienten zu zeichnen.
Ändern Sie dann die Ausrichtung des Diagramms, sodass Sie das gewünschte Ergebnis erhalten. Siehe hierzu den Befehl "view".
quelle