МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА кафедра «Захист інформації»
Звіт
про виконання лабораторних робіт №5,6
з курсу:
«ЦИФРОВА ОБРОБКА СИГНАЛІВ ТА ЗОБРАЖЕНЬ»
«Розрахунок та реалізація рекурсивних та нерекурсивних цифрових фільтрів»
Варіант №17
Мета роботи – отримати навики розрахунку параметрів і характеристик рекурсивних цифрових фільтрів, а також навчитися застосовувати засоби програмного пакету Simulink MatLab для їх реалізації та дослідження.
Завдання 1
1.Ознайомитись із теоретичними відомостями.
2.Розрахувати мінімально необхідний порядок РЦФ для забезпечення поставлених у таблиці 1 вимог.
Таблиця 1
№
Тип фільтру
Fс,
Гц
Rp, дБ
n,
порядок
17(1)
ФНЧ Баттерворта
20
2
14
Лістинг програми 1-го завдання
%Вхідні параметри фільтра
Fc=[20]; % частота зрізу
wc=[2*pi*Fc];
n=14; % порядок фільтра
Rp=2; % рівень пульсації АЧХ у смузі пропускання
%Коеф. АФ
[bs,as] = butter(n,wc,'s'); %'s' для АФ
%Графіки
w=logspace(1,4); % вектор частот у логарифм. масштабі
Hs=freqs(bs,as,w); % ПФ
Ms=abs(Hs);
As=angle(Hs);
subplot(2,1,1);
loglog(w/(2*pi),Ms); grid; axis([20 2000 10^-5 2 ]);
subplot(2,1,2);
semilogx(w/(2*pi),As);grid;axis([20 2000 -pi pi ]);
% Перехід до цифрового прототипу
Fs=2000; % частота вибірок
Fp=450; % збіжність до тієї частоти
[bd,ad]=bilinear(bs,as,Fs,Fp);
figure(2);
freqz(bd,ad); %Графіки АЧХ і ФЧХ ЦФ
% Безпосереднє обчислення коеф. ПФ РЦФ
[bz,az] = butter(n, 2*Fc/Fs );
figure(3);
freqz(bz,az);
% Альтернативнивне проектування РЦФ методом "yulewolk"
F=[0 0.3 0.3 0.6 0.6 1];
M=[0 0 1 1 0 0];
[by,ay]=yulewalk(2*n,F,M);
[Hy,fy]=freqz(by,ay,32);
N=2^5;
f=0:1/32:1000;
H=freqz(bz,az,f,Fs);
figure(4);
plot(F,M,fy/pi,abs(Hy),2*f/Fs,abs(H));
S=21;
T=0.2;N=2^12;Ts=T/N; t=0:Ts:T; % вектор часу
A=1; fo=100; w=2*pi*fo; % параметри сигналу
x=A*diric(w*t,S);
X=fft(x);
df=1/T; Fmax=1/Ts; F=-Fmax/2:df:Fmax/2;
cx=fftshift(X);
Cx=abs(cx)*Ts/T;
figure(6),
subplot(2,1,1);
plot(t(N/2-500:N/2+500),x(N/2-500:N/2+500))
grid,set(gca,'FontName','Ariel','FontSize',11)
title('Sygnal Dirichlet n')
xlabel('Time (s)'),ylabel('Signal X(t)')
subplot(2,1,2);
stem(F(N/2-500:N/2+500),Cx(N/2-500:N/2+500)),grid,set(gca,'FontName','Ariel','FontSize',11)
%axis([-(S+5)*fo/2 (S+5)*fo/2+1 0 2/S]),
title('Spectr Dirichlet n')
xlabel('Frequency (Hz)'),ylabel('Modul')
y=filter(bz,az,x);
Y=fft(y);
df=1/T; Fmax=1/Ts; F=-Fmax/2:df:Fmax/2;
cy=fftshift(Y);
Cy=abs(cy)*Ts/T;
figure(7),
subplot(2,1,1);
plot(t(N/2-500:N/2+500),y(N/2-500:N/2+500))
grid,set(gca,'FontName','Ariel','FontSize',11)
title('Sygnal Dirichlet n')
xlabel('Time (s)'),ylabel('Signal X(t)')
subplot(2,1,2);
stem(F(N/2-500:N/2+500),Cy(N/2-500:N/2+500)),grid,set(gca,'FontName','Ariel','FontSize',11)
%axis([-(S+5)*fo/2 (S+5)*fo/2+1 0 2/S]),
title('Spectr Dirichlet n')
xlabel('Frequency (Hz)'),ylabel('Modul')
Результати роботи програми
Завдання 2
1.Ознайомитись із теоретичними відомостями.
2. Розрахувати перші 5 коефіцієнтів нерекурсивного фільтра згідно заданого варіанту (таблиця 2) без накладання вікна.
Таблиця 2
№
Тип фільтру
Fс,
Гц
n,
порядок
17(1).
ФНЧ
300
30
Лістинг програми 2-го завдання
%Вхідні параметри НЦФ
n=30;N=2^10;
Fs=2000;Fq=Fs/2;
Fcl=100;Fch=900;
Fc=[Fcl/Fq Fch/Fq];
Fc=300;
Fcn=Fc/Fq;
Wc=Fc*pi;
df=1; f=0:df:Fq;
Hid=rectpuls(f-Fc/2,Fc); %АЧХ ідеального фільтра
hio=fft(Hid); % Імпульсна характеристика ідеального фільтра
dt=1/Fq; Tm=1/df; t=-Tm/2:dt:Tm/2;
hiz=fftshift(hio)*df/Fq; %Комплексний спектр
hid=abs(hiz); %Амплітудний спектр тобто імпульсна характеристика ідеального фільтра
Win=dt*n; %Ширина прямокутного вікна
hrz=hiz.*rectpuls(t,Win);%Імпульсна характеристика реального фільтра
h=abs(hrz(Fq/2-(n-1)/2:Fq/2+(n-1)/2))
Hrz=ifft(hrz); % ПФ реального НЦФ
Hrz=abs(Hrz);
figure(1),
subplot(3,1,1),
plot(f,Hid), grid,
subplot(3,1,2),
stem(t+dt*(n-1)/2, abs(hrz)), grid,
axis([-5/Fq 1.25*(n-1)/Fq -0.05 0.5]),
subplot(3,1,3),
plot(f,Hrz), grid,
%Проектування за допомогою функції fir1 з використанням вікон
h1=fir1(n,Fcn,boxcar(n+1)); % b=fir1(n,Wn,’ftype’, window);
figure(2),
H1=freqz(h1,1,f,Fs);
M1=abs(H1);
A1=angle(H1);
A1=unwrap(A1);
subplot(2,1,1);
loglog(f,M1),grid,
plot(f,M1),grid,
title('АЧХ')
xlabel('Frequency, [Hz]')
ylabel('Modul')
subplot(2,1,2);
semilogx(f,A1),grid,
plot(f,A1),grid,
xlabel(' Frequency, [Hz]')
ylabel('Faza,[Rad]')
% Example of a length 31 lowpass filter. h2=firls(n,f,a)
h2=firls(n,[0 .1 .2 .5]*2,[1 1 0 0]);
figure(3),
H2=freqz(h2,1,f,Fs);
M2=abs(H2);
A2=angle(H2);
A2=unwrap(A2);
subplot(2,1,1);
loglog(f,M2),grid,
plot(f,M2),grid,
title('АЧХ')
xlabel('Frequency, [Hz]')
ylabel('Modul')
subplot(2,1,2);
semilogx(f,A2),grid,
plot(f,A2),grid,
xlabel(' Frequency, [Hz]')
ylabel('Faza,[Rad]')
figure(4),
freqz(h1,1,f,Fs);
figure(5),
freqz(h2,1,f,Fs);
Результати роботи програми
Висновок
Виконавши дану лабораторну роботу я, отримав навики розрахунку параметрів і характеристик ФНЧ, а також навчитися застосовувати засоби програмного пакету MatLab для їх реалізації та дослідження. Також встановив, що при практичній реалізації цифрових фільтрів неминуче виникає необхідність заокруглення їх вагових коефіцієнтів і вибірок вхідного сигналу. Внаслідок заокруглення характеристики фільтрів зазнають спотворень, значення яких залежить не тільки від похибки представлення, але і від параметрів фільтра і способу його реалізації. При використанні цифрових сигнальних процесорів це пов’язано з підтримуваними форматами представлення чисел, при створенні програм обробки сигналів для ПК – з прагненням підвищити швидкодію.