
Добавил:
KaFaka
t.me
Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:LR3 / LR3_1
.m clc; clear; close all;
% Загрузка аудиосигнала
[file, path] = uigetfile({'*.wav;*.mp3'}, 'Выберите аудиофайл для обработки');
[input_signal, Fs] = audioread([path file]);
if size(input_signal, 2) > 1
input_signal = mean(input_signal, 2); % Преобразование в моно, если это необходимо
end
% Параметры фильтра
order = 2; % Порядок фильтра Баттерворта
fc = 800; % Граничная частота для фильтра высоких частот
% Расчет коэффициентов фильтра Баттерворта
[b, a] = butter(order, fc/(Fs/2), 'high'); % Выбор фильтра высоких частот
% Фильтрация аудиосигнала
output_signal = filter(b, a, input_signal);
% Вычисление и отображение АЧХ фильтра
[H, W] = freqz(b, a, 1024, Fs);
figure;
plot(W, 20*log10(abs(H)));
title('АЧХ фильтра');
xlabel('Частота (Гц)');
ylabel('Амплитуда (дБ)');
grid on;
% Вычисление и отображение спектров входного и выходного сигналов
N = length(input_signal);
f = Fs*(0:(N/2))/N;
Spectr_input = abs(fft(input_signal));
Spectr_output = abs(fft(output_signal));
figure;
subplot(2,1,1);
plot(f, 20*log10(Spectr_input(1:N/2+1)));
title('Амплитудный спектр входного сигнала');
xlabel('Частота (Гц)');
ylabel('Амплитуда (дБ)');
xlim([0 Fs/2]);
grid on;
subplot(2,1,2);
plot(f, 20*log10(Spectr_output(1:N/2+1)));
title('Амплитудный спектр выходного сигнала');
xlabel('Частота (Гц)');
ylabel('Амплитуда (дБ)');
xlim([0 Fs/2]);
grid on;
% Сохранение выходного аудиосигнала
audiowrite('output_audio_filtered_high_pass.wav', output_signal, Fs);
% Загрузка аудиосигнала
[file, path] = uigetfile({'*.wav;*.mp3'}, 'Выберите аудиофайл для обработки');
[input_signal, Fs] = audioread([path file]);
if size(input_signal, 2) > 1
input_signal = mean(input_signal, 2); % Преобразование в моно, если это необходимо
end
% Параметры фильтра
order = 2; % Порядок фильтра Баттерворта
fc = 800; % Граничная частота для фильтра высоких частот
% Расчет коэффициентов фильтра Баттерворта
[b, a] = butter(order, fc/(Fs/2), 'high'); % Выбор фильтра высоких частот
% Фильтрация аудиосигнала
output_signal = filter(b, a, input_signal);
% Вычисление и отображение АЧХ фильтра
[H, W] = freqz(b, a, 1024, Fs);
figure;
plot(W, 20*log10(abs(H)));
title('АЧХ фильтра');
xlabel('Частота (Гц)');
ylabel('Амплитуда (дБ)');
grid on;
% Вычисление и отображение спектров входного и выходного сигналов
N = length(input_signal);
f = Fs*(0:(N/2))/N;
Spectr_input = abs(fft(input_signal));
Spectr_output = abs(fft(output_signal));
figure;
subplot(2,1,1);
plot(f, 20*log10(Spectr_input(1:N/2+1)));
title('Амплитудный спектр входного сигнала');
xlabel('Частота (Гц)');
ylabel('Амплитуда (дБ)');
xlim([0 Fs/2]);
grid on;
subplot(2,1,2);
plot(f, 20*log10(Spectr_output(1:N/2+1)));
title('Амплитудный спектр выходного сигнала');
xlabel('Частота (Гц)');
ylabel('Амплитуда (дБ)');
xlim([0 Fs/2]);
grid on;
% Сохранение выходного аудиосигнала
audiowrite('output_audio_filtered_high_pass.wav', output_signal, Fs);
Соседние файлы в папке LR3