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 | + | 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. |
− | + | [[Plik:spectrogram.png|600px|thumb|center|Idea tworzenia spektrogramu]] | |
− | |||
− | |||
− | |||
− | [[Plik:spectrogram.png|600px|thumb| | ||
− | |||
− | |||
+ | 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> | ||
− | === | + | |
− | Powtórz | + | 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.
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?