Beispiel: Mit WAV-Dateien arbeiten und Spektrogramme erstellen
Verwenden Sie die Funktionen READWAV und GETWAVINFO, um WAV-Dateien zu lesen und Formatinformation aus diesen Dateien abzurufen.
WAV-Information abrufen
1. Verwenden Sie GETWAVINFO, um Informationen von einer Sounddatei abzurufen. Diese Sounddatei ist ein Beispiel für die Wiedergabe der Laute von Stenella-Walen. Sie können sie mit jedem Musikwiedergabeprogramm abspielen.
Der Vektor enthält die Kanalzahl, die Abtastfrequenz, die Auflösung (Anzahl Bits pro Sample) und die durchschnittliche Anzahl von Bytes pro Sekunde, die ein Audiowiedergabegerät verarbeiten muss, um den Ton in Echtzeit wiederzugeben.
2. Werten Sie die Vektorvariablen aus.
Eine Sounddatei einlesen
1. Verwenden Sie die Funktion READWAV, um die Sounddatei zu lesen, und speichern Sie sie in einem Vektor.
Wenn READWAV eine Matrix zurückgibt, stellen aufeinanderfolgende Spalten die unabhängigen Datenkanäle dar.
2. Verwenden Sie die Funktion length, um die Gesamtzahl der Samples zu berechnen.
3. Plotten Sie das Signal.
4. Verwenden Sie die Funktionen match, max und min, um die Samples mit dem maximalen und minimalen Betrag zu ermitteln, und ermitteln Sie dann die entsprechende Samplezeit.
5. Plotten Sie die ersten 25000 Samples, und verwenden Sie Markierer, um das Sample mit dem maximalen Betrag anzuzeigen.
Ein Spektrogramm erstellen
Analysieren Sie die Sounddaten, indem Sie die Daten in kleine Zeitabschnitte aufteilen und den Frequenzinhalt jedes Abschnitts anzeigen. In diesem Beispiel wird ein Abschnitt mit 128 Samples verwendet.
1. Definieren Sie einen Vektor von Abschnittsgrößen in Potenzen von 2.
Dabei ist ss die Anzahl der Zeilen in der Abschnittsmatrix.
2. Definieren Sie einen Vektor von Überlappungsfaktoren zwischen 0-90% in Inkrementen von 10.
Die Überlappung kann nicht 100% sein.
3. Legen Sie den Überlappungsfaktor fest, und verwenden Sie die Funktionen floor und ceil, um die Größe der Matrix zu definieren.
Wenn die Überlappung auf null festgelegt ist, wird der Vektor Data in mehrere ss-long-Segmente unterteilt. Mit zunehmender Überlappung erhöht sich auch die Anzahl von ss langen Segmenten, was auch durch die folgende Gleichung gezeigt wird:
Jede Kombination von Abschnittsgröße und Überlappungsfaktor resultiert in anderen Abschnittsmatrixbemaßungen:
Die Verwendung von ss=128 und overlap=40% resultiert in einer 128x2602-Matrix, deren Erstellung und Darstellung sehr viel Zeit in Anspruch nehmen kann.
4. Erstellen Sie den Vektor TI, um die Einstellung von ti auf einen von zehn Werten zu erleichtern, die gleich oder kleiner als der Wert von ti sind.
5. Legen Sie ti auf eines der mittleren Elemente von TI fest, und beobachten Sie das Isolinienplot an der Unterseite des Arbeitsblatts.
Die neuen Abschnittsmatrixbemaßungen lauten nun:
6. Stellen Sie jeden Abschnitt mit einem Hamming-Fenster dar.
7. Verwenden Sie die Funktion log, um die Frequenzen in Dezibel darzustellen.
8. Verwenden Sie die Funktion dft (oder die veraltete Funktion fft), um die Fourier-Transformation des Abschnitts zu ermitteln.
Um die veraltete Funktion fft zu verwenden, deaktivieren Sie den oberen Bereich und aktivieren den unteren Bereich.
9. Verwenden Sie ein Isolinienplot, um spectra zu plotten.
10. Experimentiere Sie mit unterschiedlichen Werten der Abschnittsgröße (ss), overlap und ti. Um den Effekt auf die Berechnung und die Plot-Zeiten zu sehen, sollten Sie jedoch jeweils nur einen Parameter ändern und für die anderen beiden Parameter die Standardwerte [128 0.4 82] eingestellt lassen.
Die aktuellen Einstellungen von ss, overlap und ti werden unten angezeigt: