Verfasst am: 13.03.2015, 20:49
Titel: Spectrogram eines Audiosignals mit Pegel in Pascal
Hallo liebe Profis,
ich habe ein, hoffentlich für euch triviales, Problem. Entschuldigt bitte, dass ich nicht die Zeit hatte, um in den Threads viel zu suchen...
Ich habe ein Audiosignal (wav), welches als Spektrogramm dargestellt werden soll. Die Colorbar sollte eigentlich Werte zwischen 0 und 6,... Pascal anzeigen, wie sie es bei der fft auch tut. Macht sie aber nicht. Der Wertebereich liegt zwischen -20 und -140 (db?). Surf hatte ich schon ausprobiert, verstehe ich aber auch nicht ganz.
Verfasst am: 13.03.2015, 23:04
Titel: Re: Spectrogram eines Audiosignals mit Pegel in Pascal
Hallo Patzekal,
Hast Du schon die Dokumentation des Befehls durchgelesen? http://www.mathworks.com/help/signal/ref/spectrogram.html
Dies sollte die Outputs hinreichend gut erklären. Es wäre nicht effizient, wenn hier im Forum die Hilfe-Texte nacherzählt werden.
Ist nach dem Lesen des Hilfe-Textes noch etwas unklar? Was genau?
Was genau ist denn eine "gescheite" colorbar? In den Beispielen findest Du eines, bei dem die ColorBar manuell definiert wird - mit dem Befehl "colorbar" naheliegenderweise. Hilft das?
Gude Jan,
danke für die Anteilnahme! Ich kenne die Hilfe. Das Problem besteht immer noch, dass ich meinen Audiovektor in das spectrogram einsetze und die Colorbar mir nur negative Werte anzeigt.
Wenn ich surf benutzen möchte, gibt er mir die Colorbar mit bis zu 700 aus (bei Werten zwischen 0 und 6,3 Pa)...
Warning: Axis limits outside float precision, use
ZBuffer or Painters instead. Not rendering
> In Loadwave at 96
Warning: Axis limits outside float precision, use
ZBuffer or Painters instead. Not rendering
> In Loadwave at 96
>>
Verfasst am: 15.03.2015, 01:47
Titel: Re: Spectrogram eines Audiosignals mit Pegel in Pascal
Hallo Patzekal,
Zitat:
Surf hatte ich schon ausprobiert, verstehe ich aber auch nicht ganz.
Was hast Du genau ausprobiert und was verstehst Du nicht?
Um heraus zu finden, wieso die Axis-Limits jenseits der Floating-Point-Precision sind, müsste wir ein Programm und die Input-Daten haben, die das Problem reproduzieren. Mir fällt bisher zumindest noch nichts ein, was ich antworten könnte.
Mit der Umrechnung des Faktors müsste die maximale Laustärke max. 6.32 Pa groß sein. Das Probelm ist, dass ich nicht ganz nachvollziehen kann, was die Outputs S und P (PSD) zu bedeuten haben und ob ich surf richtig bedatet hab. Leider ist es meine Vorgabe das spectrogram zu verwenden und es eine STFT machen zu lassen, was ja laut Hilfe nur über die Outputs [S,F,T,P] geht. Es sieht sonst auch i.O. aus, nur die Colorbar ist daneben und zeigt seltsame Werte an.
Schön wäre natürlich eine Lösung dazu, falls es ganz andere Ideen bezüglich eines 3d-Plots gibt, die nachvollziehbar (für den Ottonormalverbraucher) sind, wäre ich aber auch nicht abgeneigt =)
% Spektrogramm % Spektrogram anzeigen % S = spectrogram(x,window,noverlap,nfft,fs) % -> window ist das Hamming Fenster der Länge nfft % -> noverlap ist die anzahl der Abstaungen, die jedes segment überlappt. % Der vorgabewert ist die anzahl, die 50% überlappungen zwischen den % Segmenten erzeugen. % -> nfft ist die FFT-Lände % -> fs ist die Abtastfrequenz % -> 'yaxis' vertauscht Achsen
Das Probelm ist, dass ich nicht ganz nachvollziehen kann, was die Outputs S und P (PSD) zu bedeuten haben
Die Documentation sagt dazu:
S: the short-time Fourier transform of the input signal, x. Each column of s contains an estimate of the short-term, time-localized frequency content of x.
P: matrix, containing a power spectral density (PSD) estimate of each section.
Was bedeutet "surf richtig bedatet"? Was ist denn "richtig"? Dazu müsstest Du noch erklären, was Du genau erreichen möchtest. Man kann zu einem Stück Code ja nicht entscheiden, ob es richtig oder falsch ist, zumindest so lange die Syntax korrekt ist.
Zitat:
Es sieht sonst auch i.O. aus, nur die Colorbar ist daneben und zeigt seltsame Werte an.
Ich bezweifele wirklich, dass die Colorbar "seltsame" Werte anzeigt. Das wäre doch sehr verblüffend für ein Tool, dass 1000fach getestet wurde. Ich vermute eher, dass sie nur nicht das anzeigt, was Du vermutest, aber dann treffen einfach die Vermutungen nicht zu.
Hast Du schonmal den Vorschlag aus den Beispielen in der Dokumentation verfolgt und einfach eine eigene Colorbar mit dem Befehl COLORBAR erzeugt?
Gruß, Jan
PS. "clear all, close all, clc" ist brutal. Einerseits werden alle Breakpoints des Debuggers gelöscht, und der Debugger ist ein wertvolles Werkzeug. Außerdem einfach mal alle anderen Fenster zu schließen kann sehr unpraktisch sein. Wieso sich dieser massive Mache-Alles-Platt-Header in so vielen Programmen findet, bleibt mir ein Rätsel. In produktiv eingesetztem Code sollte dies niemals auftauchen.
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
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.