Добавил:
KaFaka
t.me
Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:LR3 / LR3
.m clc; clear; close all;
% Загрузка аудиосигнала
[file, path] = uigetfile({'*.wav;*.mp3'}, 'Выберите аудиофайл');
if isequal(file,0)
disp('Файл не выбран.');
else
disp(['Выбранный файл: ', fullfile(path, file)]);
[input_signal, Fs] = audioread(fullfile(path, file));
end
% Преобразование стерео в моно, если это необходимо
if size(input_signal, 2) == 2
input_signal = mean(input_signal, 2);
end
% Параметры фильтра
IIR_Ord = 2; % порядок фильтра
low_freq = 200; % нижняя граница полосы пропускания
up_freq = 1000; % верхняя граница полосы пропускания
% Расчёт коэффициентов фильтра Баттерворта
[b, a] = butter(IIR_Ord, [2*low_freq/Fs, 2*up_freq/Fs], 'bandpass');
% Фильтрация
output_signal = filter(b, a, input_signal);
% Вычисление и отображение спектра
N = length(input_signal);
f = (0:N-1)*(Fs/N);
figure;
subplot(2,1,1);
plot(f, abs(fft(input_signal)));
title('Спектр входного сигнала');
xlabel('Частота (Гц)');
ylabel('|P(f)|');
subplot(2,1,2);
plot(f, abs(fft(output_signal)));
title('Спектр выходного сигнала');
xlabel('Частота (Гц)');
ylabel('|P(f)|');
% Отображение АЧХ фильтра
[H, F] = freqz(b, a, 'half', Fs);
figure;
plot(F, 20*log10(abs(H)));
title('АЧХ фильтра');
xlabel('Частота (Гц)');
ylabel('Уровень (дБ)');
grid on;
% Сохранение выходного аудиофайла
audiowrite('output_audio_filtered.wav', output_signal, Fs);
disp('Фильтрация завершена. Выходной файл сохранён.');
% Загрузка аудиосигнала
[file, path] = uigetfile({'*.wav;*.mp3'}, 'Выберите аудиофайл');
if isequal(file,0)
disp('Файл не выбран.');
else
disp(['Выбранный файл: ', fullfile(path, file)]);
[input_signal, Fs] = audioread(fullfile(path, file));
end
% Преобразование стерео в моно, если это необходимо
if size(input_signal, 2) == 2
input_signal = mean(input_signal, 2);
end
% Параметры фильтра
IIR_Ord = 2; % порядок фильтра
low_freq = 200; % нижняя граница полосы пропускания
up_freq = 1000; % верхняя граница полосы пропускания
% Расчёт коэффициентов фильтра Баттерворта
[b, a] = butter(IIR_Ord, [2*low_freq/Fs, 2*up_freq/Fs], 'bandpass');
% Фильтрация
output_signal = filter(b, a, input_signal);
% Вычисление и отображение спектра
N = length(input_signal);
f = (0:N-1)*(Fs/N);
figure;
subplot(2,1,1);
plot(f, abs(fft(input_signal)));
title('Спектр входного сигнала');
xlabel('Частота (Гц)');
ylabel('|P(f)|');
subplot(2,1,2);
plot(f, abs(fft(output_signal)));
title('Спектр выходного сигнала');
xlabel('Частота (Гц)');
ylabel('|P(f)|');
% Отображение АЧХ фильтра
[H, F] = freqz(b, a, 'half', Fs);
figure;
plot(F, 20*log10(abs(H)));
title('АЧХ фильтра');
xlabel('Частота (Гц)');
ylabel('Уровень (дБ)');
grid on;
% Сохранение выходного аудиофайла
audiowrite('output_audio_filtered.wav', output_signal, Fs);
disp('Фильтрация завершена. Выходной файл сохранён.');