Forum: Digitale Signalverarbeitung / DSP / Machine Learning MATLAB: Amplituden bei Specgram


von Delete M. (skywalker)


Lesenswert?

Wenn ich in MATLAB die specgram-Funktion nutze und da beispielsweise ein 
Audiosignal reinschiebe, erhalte ich bekanntermaßen ein Spektrogramm mit 
schönen bunten Farben. Dass das logarithmische Werte sind ist auch klar.
Nur wie kommen diese zustande? Mir ist schon klar, dass die spektrale 
Leistungsdichten darstellen. Ich weiß einfach nicht was genau diese 
Funktion macht bzw. wie sie diese Amplitudenwerte berechnet.

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Guck doch einfach in die Quelldatei specgram.m

Cheers!

von Delete M. (skywalker)


Lesenswert?

Mhh, die specgram.m hab ich mir schon angeschaut. Die Amplituden werden 
an dieser Stelle berechnet:
1
imagesc([0 1/f(2)],f,20*log10(abs(y)+eps));axis xy; colormap(jet)
Dass das 20 mal der dekadische Logarithmus ist, wusste ich auch vorher 
schon. Bezieht sich also nicht auf eine Leistung (sonst wäre es 10 mal). 
Mir gehts darum zu verstehen, wie ich, wenn ich eine bestimmte Farbe im 
Spektrum sehe, daraus einen Rückschluss auf den konkreten Amplitudenwert 
im gesamten Signal ziehen kann bzw. was ich mir unter dieser Farbe in 
der "realen" Welt vorstellen kann.
Ist es tatsächlich so, dass einfach nur die FFT vom Signal berechnet 
wird und die Amplituden logarithmisch bestimmten Farbwerten zugeordnet 
werden? Wenn dem so ist, kann man anhand der Farben zwar die 
Unterschiede zwischen einzelnen Amplituden beurteilen, aber keinen 
konkreten Rückschluss auf das reale (physikalische) Signal ziehen. Oder 
fehlt mir da noch was in der Vorstellung?

Und werden die Farben dann so zugeordnet, dass der höchste Wert 
dunkelrot und der niedrigste Wert dunkelblau ist? Ich weiß, dass 
imagesc() die Amplitudenwerte auf die Länge der colormap skaliert, also 
müsste der größte Amplitudenwert dem höchsten Farbindex und der 
niedrigste Amplitudenwert dem niedrigsten Farbindex zugeordnet werden?

von Peter (Gast)


Lesenswert?

Hallo skywalker,

mich beschäftigt momentan genau dieses Problem. Hast Du mittlerweile 
eine Lösung für das Schließen auf die konkreten Amplitudenwerte 
gefunden? Wie bist Du dabei vorgegangen?

Vielen Dank für Deine Hilfe,
Gruß

Peter

von Ollz (Gast)


Lesenswert?

Die Werte werden einfach auf die Colormap amgebildet. Wie steht alles in 
der Domumentation zu imagesc und colormap. Also ist das gute alte RTFM 
angesagt.

von Unit* (Gast)


Lesenswert?

Das Zauberwort heißt 'colorbar'!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.