
Добавил:
toykion
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лаб3 / lab3
.m clc, clear, close all %очистка памяти
[input_signal,Fd] = audioread('song1.wav');
N = length(input_signal);%Получить длину данных аудиофайла
IIR_Ord=3; % задаем порядок фильтра-прототипа
% задаем граничные частоты полосы пропускания фильтра
low_freq = 800;
% выполняем расчет коэффициентов РЦФ Баттерворта,
% вызывая стандартную функцию butter(...)
[b a]=butter(IIR_Ord, 2.*low_freq./Fd,'high');
% осуществляем фильтрацию всей имеющейся записи,
% вызывая стандартную функцию Matlab
output_signal(:,1)=filter(b,a,input_signal(:,1));
output_signal(:,2)=filter(b,a,input_signal(:,2));
% вычисляем спектры входного и выходного сигнала
% только для того, чтобы посмотреть графики изменений,
% внесенных фильтром:
Spectr_input=fft(input_signal(:,1));
Spectr_output=fft(output_signal(:,1));
% строим графики спектров входного и выходного сигналов
figure(1)
X=20*log10(abs(Spectr_input)); %Преобразовать в дБ
f=[0:(Fd/N):Fd/2]; %Перевести Абсциссу в Гц
X=X(1:length(f));
semilogx(f,X);
grid;
xlabel('Частота (Гц)');
ylabel('Уровень (дБ)');
title('Амплитудные спектры аудиофайлов');
hold on
Y=20*log10(abs(Spectr_output)); %Преобразовать в дБ
Y=Y(1:length(f));
hLine(2)=semilogx(f,Y);
figure(1)
hold off
legend('input audio','output audio')
% строим график АЧХ фильтра
[H, F] = freqz(b,a, N,'whole',Fd);
f=[0:(Fd/N):Fd/2];
W=H(1:length(f));
figure(2), semilogx(f, 20*log(abs(W))./log(10)), grid
ylim([-110 10])
xlim([1 22000])
% осуществляем построение графиков
% входного и выходного сигналов
figure(3)
subplot(2,1,1); plot(input_signal);
subplot(2,1,2); plot(output_signal);
audiowrite('song1_filtered.wav', output_signal, Fd)
[input_signal,Fd] = audioread('song1.wav');
N = length(input_signal);%Получить длину данных аудиофайла
IIR_Ord=3; % задаем порядок фильтра-прототипа
% задаем граничные частоты полосы пропускания фильтра
low_freq = 800;
% выполняем расчет коэффициентов РЦФ Баттерворта,
% вызывая стандартную функцию butter(...)
[b a]=butter(IIR_Ord, 2.*low_freq./Fd,'high');
% осуществляем фильтрацию всей имеющейся записи,
% вызывая стандартную функцию Matlab
output_signal(:,1)=filter(b,a,input_signal(:,1));
output_signal(:,2)=filter(b,a,input_signal(:,2));
% вычисляем спектры входного и выходного сигнала
% только для того, чтобы посмотреть графики изменений,
% внесенных фильтром:
Spectr_input=fft(input_signal(:,1));
Spectr_output=fft(output_signal(:,1));
% строим графики спектров входного и выходного сигналов
figure(1)
X=20*log10(abs(Spectr_input)); %Преобразовать в дБ
f=[0:(Fd/N):Fd/2]; %Перевести Абсциссу в Гц
X=X(1:length(f));
semilogx(f,X);
grid;
xlabel('Частота (Гц)');
ylabel('Уровень (дБ)');
title('Амплитудные спектры аудиофайлов');
hold on
Y=20*log10(abs(Spectr_output)); %Преобразовать в дБ
Y=Y(1:length(f));
hLine(2)=semilogx(f,Y);
figure(1)
hold off
legend('input audio','output audio')
% строим график АЧХ фильтра
[H, F] = freqz(b,a, N,'whole',Fd);
f=[0:(Fd/N):Fd/2];
W=H(1:length(f));
figure(2), semilogx(f, 20*log(abs(W))./log(10)), grid
ylim([-110 10])
xlim([1 22000])
% осуществляем построение графиков
% входного и выходного сигналов
figure(3)
subplot(2,1,1); plot(input_signal);
subplot(2,1,2); plot(output_signal);
audiowrite('song1_filtered.wav', output_signal, Fd)