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

Z Brain-wiki
m
Linia 7: Linia 7:
  
 
===2. Analiza czasowa widma===
 
===2. Analiza czasowa widma===
Programistyczna część projektu polega na samodzielnej  implementacji spektrogramu. Spektrogram otrzymujemy w następujący sposób:
+
Programistyczna część projektu polega na samodzielnej  implementacji spektrogramu: reprezentacji rozkładu energii sygnału w dzeidzinie czas-częstość. Idea tworzenia tej reprezentacji przedctawiona jest na poniższym rysunku.
* sygnał dzielimy na fragmenty o długości '''N_okna'''
+
[[Plik:spectrogram.png|600px|thumb|center|Idea tworzenia spektrogramu]]
* 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
 
[[Plik:spectrogram.png|600px|thumb|left|Idea tworzenia spektrogramu]]
 
  
===3. Prezentacja===
 
Macierz wykreśl przy pomocy funkcji ''pylab.imshow'', podając zakresy poszczególnych osi przy użyciu parametru
 
  
 +
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 <tt>pylab.imshow</tt>, podając zakresy poszczególnych osi przy użyciu parametru
 
<math>
 
<math>
 
\textrm{extent} = (t_{min}, t_{max}, f_{min}, f_{max}) \,.
 
\textrm{extent} = (t_{min}, t_{max}, f_{min}, f_{max}) \,.
 
</math>
 
</math>
  
===4. Interpretacja wyniku===
+
 
Powtórz punkty 2 i 3 dla kilku różnych szerokości okien <math>N_w</math> i zinterpretuj widoczne różnice.
+
Kod należy przygotować tak aby łatwo było modyfikować:
 +
* typ okna, jego długość i stopień nachodzenia okien.
 +
* zakres czasu i częstości wyświetlanej reprezentacji
 +
* 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
 +
 
 +
===3. Interpretacja wyniku===
 +
* Powtórz punkt  3 dla kilku różnych długości okien '''N_okna''' i 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?

Wersja z 10:02, 19 lis 2016

1. Dane

Poniżej znajdyją 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

Programistyczna część projektu polega na samodzielnej implementacji spektrogramu: reprezentacji rozkładu energii sygnału w dzeidzinie czas-częstość. Idea tworzenia tej reprezentacji przedctawiona 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

[math] \textrm{extent} = (t_{min}, t_{max}, f_{min}, f_{max}) \,. [/math]


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

  • typ okna, jego długość i stopień nachodzenia okien.
  • zakres czasu i częstości wyświetlanej reprezentacji
  • 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

3. Interpretacja wyniku

  • Powtórz punkt 3 dla kilku różnych długości okien N_okna i 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?