Спектрограмма — это визуализация спектра звука или сигнала, которая позволяет увидеть его составляющие частоты в зависимости от времени. Этот инструмент широко используется в анализе звука, музыке, обработке сигналов и других областях. MATLAB — одна из самых популярных программ для выполнения таких задач.
В этой статье мы рассмотрим, как использовать MATLAB для построения спектрограммы. Мы покажем примеры кода и подробное руководство, которые помогут вам начать работу и получить результаты.
Прежде всего, мы изучим, как подключиться к аудиофайлу и прочитать его с помощью функций MATLAB. Затем мы рассмотрим, как преобразовать аудиофайл в спектрограмму с помощью функции спектрального анализа. Мы также рассмотрим различные параметры и настройки, которые можно задать для настройки спектрограммы под ваши нужды.
Если вы заинтересованы в анализе звука или сигнала, построение спектрограммы в MATLAB — это важный инструмент, который поможет вам исследовать и понять составляющие частоты вашего звука или сигнала. Прочитайте эту статью, чтобы узнать больше о том, как получить спектрограмму в MATLAB и использовать ее для анализа данных.
Основы построения спектрограммы в MATLAB
Для построения спектрограммы в MATLAB можно использовать функцию spectrogram. Эта функция позволяет получить спектрограмму сигнала на основе его временного сигнала и параметров анализа.
Как пример, рассмотрим построение спектрограммы для аудиофайла. Сначала необходимо загрузить аудиофайл в MATLAB с помощью функции audioread:
[signal, fs] = audioread(‘file.wav’);
В данном случае, переменная signal будет содержать временной сигнал, а переменная fs — частоту дискретизации аудиофайла.
Далее, нужно выбрать параметры для анализа спектрограммы, такие как размер окна и шаг перекрытия. Например, размер окна можно задать в секундах, используя функцию seconds:
windowSize = seconds(0.02);
Шаг перекрытия можно задать, выбрав значение от 0 до 1, где 0 соответствует основным значениям окна, а 1 — полному перекрытию. Например:
overlap = 0.5;
Затем, вызываем функцию для создания спектрограммы:
spectrogram(signal, windowSize, overlap, [], fs, ‘yaxis’);
Эта функция построит спектрограмму сигнала, отобразив ее по осям времени и частоты (yaxis).
Чтобы добавить метку времени на ось Х, можно использовать функцию datetick. Например:
datetick(‘x’, ‘HH:MM:SS’);
Таким образом, с помощью функции spectrogram и других функций MATLAB можно легко построить спектрограмму для анализа временного сигнала в частотной области.
Примеры кода для создания спектрограммы
В MATLAB для создания спектрограммы можно использовать функцию spectrogram
, которая позволяет визуализировать спектральные характеристики звукового сигнала. Рассмотрим несколько примеров кода для создания спектрограммы.
Пример 1:
audio = audioread('audio.wav'); % загрузка аудиофайла
windowLength = 1024; % длина окна
overlap = 512; % перекрытие окон
fftLength = 1024; % размер Фурье-преобразования
% создание спектрограммы
spectrogram(audio, windowLength, overlap, fftLength, 'yaxis');
colorbar; % добавление цветовой шкалы
Пример 2:
[audio, Fs] = audioread('audio.wav'); % загрузка аудиофайла и получение частоты дискретизации
% создание временной оси
time = (0:length(audio)-1)/Fs;
% создание спектрограммы
figure;
spectrogram(audio, hamming(windowLength), overlap, fftLength, Fs, 'yaxis');
colorbar; % добавление цветовой шкалы
title('Спектрограмма аудиофайла');
xlabel('Время, с');
ylabel('Частота, Гц');
Пример 3 (с применением фильтрации):
audio = audioread('audio.wav'); % загрузка аудиофайла
windowLength = 1024; % длина окна
overlap = 512; % перекрытие окон
fftLength = 1024; % размер Фурье-преобразования
% низкочастотный фильтр
cutoffFreq = 1000; % частота среза
[b, a] = butter(6, cutoffFreq/(Fs/2), 'low'); % коэффициенты фильтра
filteredAudio = filter(b, a, audio); % фильтрация аудиофайла
% создание спектрограммы
spectrogram(filteredAudio, windowLength, overlap, fftLength, 'yaxis');
colorbar; % добавление цветовой шкалы
Пример 4 (с настройкой отображения):
audio = audioread('audio.wav'); % загрузка аудиофайла
windowLength = 1024; % длина окна
overlap = 512; % перекрытие окон
fftLength = 1024; % размер Фурье-преобразования
% создание спектрограммы с настройками отображения
spectrogram(audio, windowLength, overlap, fftLength, 'MinThreshold', -80, 'yaxis');
colorbar; % добавление цветовой шкалы
Это лишь небольшая часть возможностей MATLAB для создания спектрограммы аудиофайла. С помощью различных параметров и настроек можно изменять внешний вид спектрограммы для получения нужного результата.
Руководство по построению спектрограммы в MATLAB
Шаг 1: Загрузите аудиофайл или создайте вектор сигнала в MATLAB.
Шаг 2: Примените оконную функцию к сигналу. Оконная функция помогает уменьшить эффект «Боковых лепестков» и улучшить разрешение спектрограммы. В MATLAB есть много оконных функций, например, окно Хэмминга и окно Ханна.
Шаг 3: Разделите сигнал на перекрывающиеся фрагменты. Это делается для того, чтобы создать временные окна для анализа спектра в разных моментах времени. Наиболее распространенным выбором для перекрытия является 50% от длины окна.
Шаг 4: Примените преобразование Фурье к каждому фрагменту сигнала. Используйте быстрое преобразование Фурье (FFT) для быстрого и эффективного вычисления спектра.
Шаг 5: Постройте спектрограмму с помощью полученного спектра. MATLAB предоставляет функцию «imagesc», которая может быть использована для отображения спектрограммы в виде цветовой карты, где цвет каждого пикселя соответствует интенсивности спектра в данной частоте и времени.
Вот пример кода для построения спектрограммы в MATLAB:
% Шаг 1: Загрузка аудиофайла
[y, fs] = audioread('audio.wav');
% Шаг 2: Применение оконной функции
window = hann(1024);
y_windowed = y.*window;
% Шаг 3: Разделение сигнала на фрагменты
hop_size = round(length(window)/2);
n_frames = floor((length(y)-length(window))/hop_size) + 1;
% Шаг 4: Применение преобразования Фурье
spectrum = zeros(length(window)/2 + 1, n_frames);
for i = 1:n_frames
frame = y_windowed((i-1)*hop_size + 1:(i-1)*hop_size + length(window));
spectrum(:,i) = abs(fft(frame)).^2;
end
% Шаг 5: Построение спектрограммы
imagesc(log10(spectrum))
set(gca,'YDir','normal')
xlabel('Время')
ylabel('Частота')
colorbar
После выполнения вышеуказанного кода вы получите спектрограмму аудиофайла «audio.wav» в MATLAB.
Спектрограмма — мощный инструмент для анализа звука и визуализации данных. Она может быть использована для обнаружения звуковых шаблонов, идентификации сигналов и многих других приложений. В MATLAB вы можете легко построить спектрограмму и настроить ее в соответствии с вашими потребностями.