STATLAB/Zadanie zaliczeniowe3: Różnice pomiędzy wersjami

Z Brain-wiki
Linia 32: Linia 32:
 
** wzdłuż osi poziomej moc sygnału w czasie
 
** wzdłuż osi poziomej moc sygnału w czasie
 
** wzdłuż osi pionowej widmo mocy z całego prezentowanego odcinka czasu
 
** wzdłuż osi pionowej widmo mocy z całego prezentowanego odcinka czasu
 +
wskazówka: można skorzystać z instrukcji w https://matplotlib.org/stable/tutorials/intermediate/arranging_axes.html
  
 
===3. Interpretacja wyniku===
 
===3. Interpretacja wyniku===

Wersja z 08:55, 10 sty 2023

ZasadyZaliczenia/Projekt_1



Projekt proszę przygotować w postaci notebooka z opisem poszczególnych kroków i własnych przemyśleń. Gotowy projekt prosimy przesyłać od Jarosława Żygierewicza (jarekz@fuw.edu.pl). W razie wątpliwości będziemy prosili o obronę projektu.


1. Dane

Poniżej znajdują się linki do dwóch fragmentów utworów audio. Zapisane są w formacie wav. Pliki takie można wczytać do programu pythonowego za pomocą funkcji scipy.io.wavfile.read( dokumentacja tej funkcji.)

Candy_Dulfer_-_Lily_Was_Here.wav

Rupert_Blaise_-_06_-_What_A_Wonderful_World.wav

2. Analiza czasowa widma: spektrogram

Programistyczna część projektu polega na samodzielnej implementacji spektrogramu: reprezentacji rozkładu energii sygnału w dziedzinie czas-częstość. Idea tworzenia tej reprezentacji przedstawiona jest na poniższym rysunku.

Idea tworzenia spektrogramu


Spektrogram otrzymujemy w następujący sposób:

  • Sygnał dzielimy na fragmenty o długości N_okna
  • Fragmenty mogą ale nie muszą na siebie nachodzić. Liczba próbek nachodzących niech będzie oznaczona N_wsp
  • Dla każdego fragmentu estymujemy widmo gęstości energii za pomocą periodogramu z okienkiem okno
  • Widma kolejnych fragmentów zapisujemy w macierzy numpy, tak, że i-ta kolumna zawiera widmo i-tego fragmentu
  • Macierz wykreśl przy pomocy funkcji pylab.imshow, podając zakresy poszczególnych osi przy użyciu parametru extent


Kod należy przygotować tak, aby łatwo było modyfikować:

  • okno, N_okna, N_wsp, czyli: typ okna, jego długość i stopień nachodzenia okien.
  • zakres czasu i częstości wyświetlanej reprezentacji: [math] t_{min}, t_{max}, f_{min}, f_{max}[/math]
  • ważne jest też wyświetlenie właściwych skal czasu i częstości
  • wersja bardziej rozwinięta powinna także wyświetlać rozkłady brzegowe mocy tj.:
    • wzdłuż osi poziomej moc sygnału w czasie
    • wzdłuż osi pionowej widmo mocy z całego prezentowanego odcinka czasu

wskazówka: można skorzystać z instrukcji w https://matplotlib.org/stable/tutorials/intermediate/arranging_axes.html

3. Interpretacja wyniku

  • Analizę spektrogramem wykonaj dla obu sygnałów i dla kilku różnych długości okien N_okna. Zinterpretuj widoczne różnice.
  • Czy na podstawie takich spektrogramów jesteśmy w stanie odróżnić kiedy grał który instrument, lub kiedy był to głos ludzki?
  • Czy dałoby się w ten sposób określić tony podstawowe?

ZasadyZaliczenia/Projekt_1