Построение спектрограммы в MATLAB — руководство с примерами и кодом

Спектрограмма — это визуализация спектра звука или сигнала, которая позволяет увидеть его составляющие частоты в зависимости от времени. Этот инструмент широко используется в анализе звука, музыке, обработке сигналов и других областях. 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 вы можете легко построить спектрограмму и настроить ее в соответствии с вашими потребностями.

Оцените статью
Добавить комментарий