Пример. Работа с WAV-файлами и создание спектрограмм
Используйте функции
READWAV и
GETWAVINFO, чтобы прочитать и получить информацию о формате из WAV-файлов.
Получение информации WAV
1. Используйте GETWAVINFO, чтобы получить информацию из звукового файла. Этот звуковой файл является образцом звуков, издаваемых продельфинами. Можно использовать любой звуковой проигрыватель, чтобы воспроизвести его.
Вектор содержит число каналов, частоту выборки, разрешение (число битов в выборке) и среднее число байтов в секунду, которые должно обработать устройство звукового проигрывателя, чтобы воспроизвести звук в режиме реального времени.
2. Вычислите переменные вектора.
Чтение в звуковой файл
1. Используйте функцию READWAV, чтобы прочитать звуковой файл и сохранить его в вектор.
Если READWAV возвращает матрицу, последовательные столбцы представляют отдельные каналы данных.
2. Используйте функцию
length, чтобы вычислить общее количество образцов.
3. Постройте график сигнала.
4. Используйте функции
match,
max и
min, чтобы найти выборки с максимальными и минимальными величинами, а затем найдите соответствующие времена выборки.
5. Постройте график первых 25000 выборок и используйте маркеры, чтобы показать выборку с максимальной величиной.
Создайте спектрограмму
Проанализируйте звуковые данные, разделив данные на малые временные слои, и покажите частотное содержимое каждого слоя. В этом примере используется слой из 128 выборок.
1. Определите вектор размеров слоя по степеням 2.
Где ss - число строк в матрице слоя.
2. Определите вектор коэффициентов перекрытия между 0-90% с приращением 10.
Перекрытие 100% невозможно.
3. Задайте коэффициент перекрытия и используйте функции floor и ceil для определения размера матрицы.
Если установлено нулевое перекрытие, вектор Data делится на число блоков ss-long. При увеличении перекрытия также увеличивается число блоков ss-long, как показывает следующее уравнение:
Каждому сочетанию размера слоя и коэффициента перекрытия соответствуют разные размеры матрицы слоя:
При использовании значений ss=128 и overlap=40% получается матрица 128x2602, для компоновки и построения графика которой может потребоваться очень много времени.
4. Создайте вектор TI, чтобы упростить настройку ti на одно из десяти значений, которые равны или меньше значения ti.
5. Задайте для ti один из средних элементов TI и наблюдайте за контурным графиком в нижней части документа.
Новые размеры матрицы слоя:
6. Кадрируйте каждый слой с использованием окна Hamming.
7. Используйте функцию log, чтобы представить частоты в децибелах.
8. Используйте функцию
dft (или устаревшую функцию fft), чтобы найти преобразование Фурье для слоя.
Чтобы использовать устаревшую функцию fft, отключите верхнюю область и включите нижнюю область.
9. Используйте контурный график для построения графика spectra.
10. Экспериментируйте с различными значениями размера слоя (ss), overlap и ti. Однако для наблюдения влияния на время вычисления и построения графика рекомендуется изменять параметры по одному, оставляя для двух других значения по умолчанию [128 0.4 82].