|
tob |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 21.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.09.2011, 10:25
Titel: spectrogram output
|
|
Hallo an alle,
ich habe folgendes Problem:
ich benutze spectrogram um das Spektrum von einem Vibrationssignal x (m/s^2) zu erzeugen.
[S,F,T]=spectrogram(x,window,noverlap,F,fs)
S ist eine Matrix von komplexen Zahlen. Bis daher alles klar.
Wenn ich die Amplituden erhalten will: abs(real(S)). Müssten dann die Amplituden in m/s^2 sein oder??
In manchen Foren wird empfohlen 20*log(abs(S)) zu rechnen was dann dB ergeben soll, was aber von mir aus nicht stimmt da erstens die Amplitude ja der reele Teil der Komplexen Zahl ist und zweitens um dB zu erhalten ich ja irgend einen Vergleichswert brauche (wie in der Akustik den Vergleichsdruck p0).
Kurze Zusammenfassung der Frage:
Bei einem input x in m/s^2, wie erhalte ich die Amplituden und in welcher Einheit sind sie?
Hat es physikalisch Sinn 20*log(abs(S)) zu rechnen?
Tob[/b]
|
|
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 21.09.2011, 10:49
Titel:
|
|
Wie kommst du denn darauf? Die Amplitude ist der Betrag der komplexen Zahl und nicht nur der Realteil:
abs(S) = sqrt(realteil^2 + imaginärteil^2)
Die Umrechnung in dB ist auch lediglich eine Skalierung, so dass man eine logarithmische Darstellung hat. Das hat den Vorteil, dass man größere Bereiche übersichtlicher Darstellen kann und Verläufe teils vereinfacht/ besser interpretierbar dargestellt werden können. So wird z.B. aus einem exponentiellem Verlauf eine Gerade . Du kannst es aber eben auch linear darstellen...kommt darauf an, was für ein Signal du hast. Wenn du das Spektrogramm darstellen lässt, wird die Amplitude jedenfalls in dB skaliert 20*log(abs(S)+eps)
Die Einheit wird dadurch aber nicht verändert, sondern bleibt gleich zum Eingangsignal.
|
|
|
tob |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 21.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.09.2011, 11:24
Titel:
|
|
...stimmt danke...war davon überzeugt dass es nur der reele teil wäre, ist aber Blödsinn...
|
|
|
tob |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 21.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.09.2011, 12:50
Titel:
|
|
...nochmal zur Einheit...
ich versteh dann nur nicht dass ich bei einem Maximalwert von 100 m/s^2 im Eingangssignal Amplituden von bis zu 3000 bekomme...das können doch keine m/s^2 sein...
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 21.09.2011, 13:13
Titel:
|
|
In der Tat kann ich es auch nicht nachvollziehen, warum das Spektrum S nicht wie bei einem Amplitudenspektrum mittels FFT skaliert wird.
Bei einer FFT muss der Betrag entweder durch N (=Anzahl Messwerte) geteilt werden, wenn man sowohl das positive als auch das negative Frequenzspektrum darstellt. Da ja aber nur der positive Teil interessiert (und auch nur dieser in spectrogram verwendet wird), wird außer dem Gleichanteil (f = 0) und der der Anteil bei der Nyqistfreq. mit N/2 skaliert. Nehmen wir an, die Segmentlänge (das Zeitsignal wird ja in Segmente zerlegt) beim spectrogram sei N=1024,
dann ist S=[1:513] Werte lang, wobei S(1) der Gleichanteil und S(513) der Wert bei der Nyqistfreq. ist.
Bsp:
Ob beim Spektrogramm der Skalierungsfaktor N nun die Segmentlänge ist, oder aber die Länge des kompl. Signals ist, weiß ich auch nicht. Ich vermute mal ersters...probier das einfach mal aus.
|
|
|
tob |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 21.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.09.2011, 15:59
Titel:
|
|
Nur um nochmal sicher zu gehen:
w ergibt dann den Verlauf der Amplitude in dB einer gewissen Frequenz (b) über die Zeit.
Ist das so richtig?
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 21.09.2011, 16:29
Titel:
|
|
So lange b nicht 1 (=Gleichanteil) oder 1025 (= Nyquistfreq.) entspricht das meiner oberen Annahme. Aber ich kann die Richtigkeit der Skalierung nicht garantieren...es muss ja eine Grund geben, warum das in der Matlab Funktion spectrogram() nicht gemacht wird. Ich habe die Skalierung ja nur einfach für ein Frequenzspektrum (siehe FFT Bsp.) eines Signals übertragen.
Edit: Warum berechnest du denn zwei mal den abs()...ist doch unnötig.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|