Из-за усечения импульсной
характеристики фильтра (конечное число членов ряда Фурье) можно наблюдать
явление Гиббса - появление пульсаций в полосах пропускания и задерживания,
возникающих у сигналов с разрывами поведения функций. На рис.3 видно, что
пульсации с увеличением порядка фильтра становятся более узкими, и их число
увеличивается, но амплитуда пульсаций остаётся практически неизменной. При число пульсаций в полосе пропускания
на рис.2 равно 2, а при
- 8.
3.
Фильтрация сигнала с использованием
операции свёртки.
- вычисляет свёртку
последовательностей
и
,
- сигнал на выходе дискретной
системы с импульсной характеристикой
и входным
сигналом
при нулевых начальных условиях.
>> load('speech.mat');
>> N1 = 16;
>> N2 = 50;
>> n1 = 0:N1-1;
>> n2 = 0:N2-1;
>> wc = 2;
>> h1 = sin(wc.*(n1-(N1-1)/2))./(pi.*(n1-(N1-1)/2));
>> h2 = sin(wc.*(n2-(N2-1)/2))./(pi.*(n2-(N2-1)/2));
>> y1 = conv(nspeech2,h1);
>> y2 = conv(nspeech2,h2);
>> sound(nspeech2)
>> sound(y1)
>> sound(y2)
>> labrab103
Matlab Script (labrab103.m)
[Y,w] = DTFT(nspeech2,512);
subplot(3,1,1)
plot(w./(2*pi),abs(Y))
title ('Амплитудный спектр исходного сигнала')
xlabel('f, Гц')
grid
[Y1,w] = DTFT(y1,512);
subplot(3,1,2)
plot(w./(2*pi),abs(Y1))
title ('Амплитудный спектр сигнала после фильтрации (N=15)')
xlabel('f, Гц')
grid
[Y2,w] = DTFT(y2,512);
subplot(3,1,3)
plot(w./(2*pi),abs(Y2))
title ('Амплитудный спектр сигнала после фильтрации (N=50)')
xlabel('f, Гц')
grid
Рис.4. Графики
амплитудных спектров исходного сигнала, сигнала после пропускания его через КИХ-фильтр
нижних частот с прямоугольным окном частотой среза для
значений длины фильтра
и
соответственно
Комментарий: Исходный
сигнал представляет собой аддитивную смесь полезного сигнала (речь) с шумом.
При его прослушивании на фоне речи слышны «шипящие» звуки. Если обратиться к
рис.4, то можно увидеть, что исходный сигнал состоит из низкочастотной и
высокочастотной составляющих. При фильтрации исходного сигнала ФНЧ, длина
которого равна , выходной сигнал будет
содержать только низкочастотную составляющую, а высокочастотная практически вся
подавляется, так как попадает в полосу задерживания фильтра. На рис.4 видно,
что в амплитудном спектре выходного сигнала в области высоких частот имеются
небольшие всплески, однако же, они по амплитуде раз в
меньше,
чем у исходного сигнала. При прослушивании этого сигнала заметно большое
подавление помехи, т.е. звук стал чище. При фильтрации исходного сигнала ФНЧ,
длина которого равна
, в амплитудном спектре
выходного сигнала в области высоких частот всплески по сравнению с фильтрацией
предыдущим ФНЧ стали ещё меньше – это объясняется тем, что граничная частота
полосы задерживания у второго ФНЧ располагается ниже по оси частот. В
отфильтрованном сигнале помеха прослушивается плохо, полезный сигнал стал более
громким и на его фоне слышан лишь низкочастотный гул. Таким образом, чем
больше порядок КИХ-фильтра нижних частот, тем он больше подходит для выделения
полезного низкочастотного сигнала из его смеси с высокочастотным шумом.
4.
Графики прямоугольного окна и окон Хэмминга, Ханна, Блэкмана для
.
- возвращает
- значений симметричного окна
Хэмминга.
-
возвращает
- значений симметричного окна Ханна.
-
возвращает
- значений симметричного окна
Блэкмана.
Matlab Script (labrab104.m)
N = 25;
n = 0:N-1;
h1 = rectpuls(n-12,N);
h2 = hamming(N);
h3 = hann(N);
h4 = blackman(N);
subplot(4,1,1)
stem(n,h1,'r')
title('Прямугольное окно')
xlabel('Номер отсчёта, n')
axis([-1,25,0,1.5])
subplot(4,1,2)
stem(n,h2,'b')
title('Окно Хэмминга')
xlabel('Номер отсчёта, n')
axis([-1,25,0,1.5])
subplot(4,1,3)
stem(n,h3,'m')
title('Окно Ханна')
xlabel('Номер отсчёта, n')
axis([-1,25,0,1.5])
subplot(4,1,4)
stem(n,h4,'g')
title('Окно Блэкмана')
xlabel('Номер отсчёта, n')
axis([-1,25,0,1.5])
Рис.5. Графики
прямоугольного окна, окна Хэмминга, окна Ханна и окна Блэкмана для
Matlab Script (labrab105.m)
N = 25;
n = 0:N-1;
h1 = rectpuls(n-12,N-2);
h2 = hamming(N);
h3 = hann(N);
h4 = blackman(N);
plot(n,h1,'r',n,h2,'b',n,h3,'m',n,h4,'g')
legend('Прямугольное окно','Окно Хэмминга','Окно Ханна','Окно Блэкмана')
axis([-1,25,0,1.5])
Рис.6. Графики
огибающих прямоугольного окна, окна Хэмминга, окна Ханна и окна Блэкмана для
Комментарий: Сглаживающие окна применяются для улучшения характеристик фильтра. Основными задачами при аппроксимации идеальной АЧХ фильтра являются – уменьшение переходной области и уменьшение пульсаций в полосах пропускания и задерживания. В зависимости от предъявляемых требований к проектируемому фильтру разработчик выбирает ту или иную оконную функцию для ограничения размера импульсной характеристики. Чем функция более плавно спадает к нулю, тем меньше уровень пульсаций. Таким образом, из рассматриваемых четырёх оконных функций фильтры, реализованные с прямоугольным окном, будут иметь самую узкую переходную область, а фильтры, реализованные с окном Блэкмана, - самый маленький уровень пульсаций.
5. Вычисление ДВПФ оконных функций из предыдущего пункта. Графики амплитудных спектров.
Matlab Script (labrab106.m)
N = 25;
n = 0:N-1;
h1 = rectpuls(n-12,N-2);
h2 = hamming(N);
h3 = hann(N);
h4 = blackman(N);
[H1,w]=DTFT(h1,512);
[H2,w]=DTFT(h2,512);
[H3,w]=DTFT(h3,512);
[H4,w]=DTFT(h4,512);
subplot(4,1,1), plot(w,20*log10(abs(H1)))
title('Амплитудный спектр прямугольного окна'), ylabel('dB')
grid, axis([0,3.2,-50,50])
subplot(4,1,2), plot(w,20*log10(abs(H2)))
title('Амплитудный спектр окна Хэмминга'), ylabel('dB')
grid, axis([0,3.2,-100,50])
subplot(4,1,3), plot(w,20*log10(abs(H3)))
title('Амплитудный спектр окна Ханна'), ylabel('dB')
grid, axis([0,3.2,-100,50])
subplot(4,1,4), plot(w,20*log10(abs(H4)))
title('Амплитудный спектр окна Блэкмана'), xlabel('рад/отсчёт'), ylabel('dB')
grid, axis([0,3.2,-150,50])
Рис.7. Графики
амплитудных спектров прямоугольного окна, окна Хэмминга, окна Ханна и окна
Блэкмана для
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.