close

Вход

Забыли?

вход по аккаунту

?

Лаба 1 моя

код для вставкиСкачать
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
"Ижевский государственный технический университет имени М.Т. Калашникова"
Кафедра "Вычислительная техника"
ОТЧЕТ
по
Лабораторной работе №1
по дисциплине
"Методы и средства обработки сигналов"
на тему: "Расчет БИХ фильтра"
ВЫПОЛНИЛ
Студент группы М03-781-1
___________Парыгин М.А.
"___"____________2013 г.
ПРОВЕРИЛ
д.т.н., профессор
кафедры ВТ
_____________Гитлин В.Б.
"___"__________2013 г.
Ижевск, 2013
Содержание
Цель работы...............................................................................3
Задание.....................................................................................3
Выполнение работы......................................................................3
Моделирование фильтра.................................................................5
Вывод......................................................................................14
Цель работы: Изучить на практике методику расчета БИХ фильтра.
Задание: Произвести расчет полосового БИХ фильтра Баттерворта нечетного порядка.
Выполнение работы
Полосовой фильтр нечетного порядка будет состоять из фильтра высоких частот и фильтра низких частот. Фильтры высоких и низких частот будут состоять из одного звена первого порядка и звеньев второго порядка. Для того чтобы построить такой фильтр, необходимо рассчитать звенья первого порядка и звенья второго порядка.
После расчета фильтра низких частот 1 порядка были получены следующие коэффициенты:
a0 = 1
a1 = (tg(π f_c/f_s )-2)/(1+tg(π f_c/f_s ))
b0 = b1 = tg(π f_c/f_s )/(1+tg(π f_c/f_s ))
После расчета фильтра низких частот 2 порядка были получены следующие коэффициенты:
a0 = 1
a1 = -2(1-〖tg〗^2 (π f_c/f_s ))/((1-2tg(π f_c/f_s )cos(α_k)+〖tg〗^2 (π f_c/f_s )) )
a2 = ((1+2tg(π f_c/f_s )cos(α_k)+〖tg〗^2 (π f_c/f_s )))/((1-2tg(π f_c/f_s )cos(α_k)+〖tg〗^2 (π f_c/f_s )) )
b0 = b2 = (〖tg〗^2 (π f_c/f_s ))/((1-2tg(π f_c/f_s )cos(α_k)+〖tg〗^2 (π f_c/f_s )) )
b1 =2b0
После расчета фильтра высоких частот 1 порядка были получены следующие коэффициенты:
a_0=1;
a_1=(tg(π∙Fc/Fs)-1)/(tg(π∙Fc/Fs)+1);
b_0=1/(tg(π∙Fc/Fs)+1);
b_1=-1/(tg(π∙Fc/Fs)+1);
После расчета фильтра высоких частот 2 порядка были получены следующие коэффициенты:
a_0=1;
a_1=(2∙〖tg〗^2 (π∙Fc/Fs)-2)/(〖tg〗^2 (π∙Fc/Fs)-2∙cos⁡〖(π∙(1/2+(2∙k+1)/(2∙n)))+1〗 ); k=0,1...(N-1)/2-1
a_2=(〖tg〗^2 (π∙Fc/Fs)+2∙cos⁡〖(π∙(1/2+(2∙k+1)/(2∙n)))+1〗)/(〖tg〗^2 (π∙Fc/Fs)-2∙cos⁡〖(π∙(1/2+(2∙k+1)/(2∙n)))+1〗 ); k=0,1...(N-1)/2-1
b_0=1/(〖tg〗^2 (π∙Fc/Fs)-2∙cos⁡〖(π∙(1/2+(2∙k+1)/(2∙n)))+1〗 ); k=0,1...(N-1)/2-1
b_1=-2/(〖tg〗^2 (π∙Fc/Fs)-2∙cos⁡〖(π∙(1/2+(2∙k+1)/(2∙n)))+1〗 ); k=0,1...(N-1)/2-1
b_2=1/(〖tg〗^2 (π∙Fc/Fs)-2∙cos⁡〖(π∙(1/2+(2∙k+1)/(2∙n)))+1〗 ); k=0,1...(N-1)/2-1
Моделирование фильтра:
Листинг программы моделирования:
clc;
close;
clear;
stacksize('max');
Fcut=50;//нижняя частота среза
Fcut1=300;//верхняя частота среза
F=50;
A=100;
Fs=1000;
n=35;
nz=floor(n/2);//число звеньев 2 порядка
tang=tan(%pi*Fcut/Fs);
tang1=tan(%pi*Fcut1/Fs);
//Коэффициенты фильтра 1 порядка
if(2*nz<n) then
a1_0=1;
a1_1=(tang-1)/(tang+1);
b1_0=1/(tang+1);
b1_1=-b1_0;
a1_01=1;
a1_11=(tang1-1)/(tang1+1);
b1_01=tang1/(tang1+1);
b1_11=b1_01;
end
//Коэффициенты фильтра 2 порядка
for i=1:nz
cosalpha=cos(%pi*(0.5+((2*(i-1)+1)/(2*n))));
a0(i)=1;
a1(i)=(2*tang*tang-2)/(1-2*tang*cosalpha+tang*tang);
a2(i)=(1+2*tang*cosalpha+tang*tang)/(1-2*tang*cosalpha+tang*tang); b0(i)=1/(1-2*tang*cosalpha+tang*tang);
b1(i)=-2*b0(i);
b2(i)=b0(i); a0l(i)=1;
a1l(i)=-2*(1-tang1*tang1)/(1-2*tang1*cosalpha+tang1*tang1);
a2l(i)=(1+2*tang1*cosalpha+tang1*tang1)/(1-2*tang1*cosalpha+tang1*tang1); b0l(i)=tang1*tang1/(1-2*tang1*cosalpha+tang1*tang1);
b1l(i)=2*b0l(i);
b2l(i)=b0l(i); end
//Тестовый вход
for i = 1:Fs
in(i) = A*sin(2*%pi*i*F/Fs);
t(i) = i/Fs;
end
for i = 1:Fs
iBuf(i)= in(i);
tBuf(i)= t(i);
end
if(2*nz<n) then
W0=0;
W1=0;
for i=1:Fs
W0=iBuf(i)-W1*a1_1;
iBuf(i)=W0*b1_0+W1*b1_1;
W1=W0;
end
W0=0;
W1=0;
for i=1:Fs
W0=iBuf(i)-W1*a1_11;
iBuf(i)=W0*b1_01+W1*b1_11;
W1=W0;
end
end
for k=1:nz
W0=0;
W1=0;
W2=0;
for i=1:Fs
W0=iBuf(i)-W1*a1(k)-W2*a2(k);
iBuf(i)=W0*b0(k)+W1*b1(k)+W2*b2(k);
W2=W1;
W1=W0; end
W0=0;
W1=0;
W2=0;
for i=1:Fs
W0=iBuf(i)-W1*a1l(k)-W2*a2l(k);
iBuf(i)=W0*b0l(k)+W1*b1l(k)+W2*b2l(k);
W2=W1;
W1=W0; end
end
OutA=0;
for i=Fs/2:Fs
if iBuf(i)>OutA then OutA=iBuf(i);
end
end
Mod=20*log10(OutA/A);
//АЧХ
for j=1:((Fs/2)-1)/10
for i = 1:Fs
f(i) = A*sin(2*%pi*i*(1+(j-1)*10)/Fs);
end if(2*nz<n) then
W0=0;
W1=0;
for i=1:Fs
W0=f(i)-W1*a1_1;
f(i)=W0*b1_0+W1*b1_1;
W1=W0;
end
W0=0;
W1=0;
for i=1:Fs
W0=f(i)-W1*a1_11;
f(i)=W0*b1_01+W1*b1_11;
W1=W0;
end
end
for k=1:nz
W0=0;
W1=0;
W2=0;
for i=1:Fs
W0=f(i)+W1*(-a1(k))+W2*(-a2(k));
f(i)=W0*b0(k)+W1*b1(k)+W2*b2(k);
W2=W1;
W1=W0; end
W0=0;
W1=0;
W2=0;
for i=1:Fs
W0=f(i)-W1*a1l(k)-W2*a2l(k);
f(i)=W0*b0l(k)+W1*b1l(k)+W2*b2l(k);
W2=W1;
W1=W0; end
end
Max(j)=0;
for i=Fs/2:Fs
if f(i)>Max(j) then Max(j)=f(i);
end
end
tt(j)=1+(j-1)*10;
end
//графика
figure(1);
clf; subplot(3,2,1)
plot2d2('gnn',tBuf,in)
xtitle('Input')
subplot(3,2,2)
plot2d1('gnn',tt,Max)
xtitle('Frequency Response')
xgrid(12);
subplot(3,2,3)
plot2d2('gnn',tBuf,iBuf)
xtitle('Output')
subplot(3,2,4)
plot2d1('gnn',tt,20*log10(Max/A))
xgrid(12);
xtitle('Bode Frequency Response')
subplot(3,2,5)
xstring(0.01,0.85,sprintf('Input amplitude = %d',A),0);
xstring(0.01,0.75,sprintf('Out amplitude = %d',OutA),0);
xstring(0.01,0.65,sprintf('Frequency = %dHz',F),0);
if Mod<0 then
xstring(0.01,0.55,sprintf('Attenuation = %fdB',Mod),0);
end
if Mod>=0 then
xstring(0.01,0.55,sprintf('Amplification = %fdB',Mod),0);
end
xstring(0.01,0.45,sprintf('Order = %d',n),0);
xtitle('Data')
subplot(3,2,6)
xstring(0.01,0.95,'Cascade Order a0 a1 a2 b0 b1 b2')
for i=1:nz
if i<10 then xc=0.03;
end
if i>=10 then xc=0.025;
end
xstring(xc,0.95-i*0.05,sprintf('%d %d %f %f %f %f %f %f',i,2,a0(i),a1(i),a2(i),b0(i),b1(i),b2(i)),0)
end
if(2*nz<n) then
xstring(xc,0.90-nz*0.05,sprintf('%d %d %f %f %f %f %f %f',nz+1,1,a1_0,a1_1,0,b1_0,b1_1,0),0)
end
xtitle('a&b')
Результаты моделирования:
Пусть частота опроса 1000 Гц, нижняя частота среза 50 Гц, верхняя частота среза 300 Гц. Проведем тестирование системы для фильтров разных порядков. Также, будем подавать на вход сигнал с частотой 50Гц. На рисунках ниже представлена АЧХ фильтра в линейном (сверху) и логарифмическом (посередине) масштабе, а также выходной сигнал (снизу).
Входной сигнал
3 порядок:
7 порядок:
15 порядок:
35 порядок:
Общий вид программы:
В левой верхней части приведен входной сигнал.
В правой верхней части приведена амплитудно-частотная характеристика в линейном масштабе.
В средней левой части приведен выходной сигнал. В средней правой части приведена амплитудно-частотная характеристика в логарифмическом масштабе.
В левой нижней части приведены численные характеристики: амплитуда входного, амплитуда выходного сигналов, частота входного сигнала, ослабление на частоте входного сигнала и порядок фильтра.
В правой нижней части приведены коэффициенты фильтра для каждого каскада.
Вывод: В результате проделанной лабораторной работы были рассчитаны формулы для проектирования цифрового (БИХ) полосового фильтра Баттерворта нечетного порядка. Данные формулы позволяют строить фильтр любого порядка с любой частотой дискретизации и любой частотой среза, при условии, что частота среза ниже частоты Найквиста. Для проведения испытаний рассчитанных формул был разработан сценарий для языка математического программирования SciLab. Проведенные испытания доказывают верность произведенных расчетов.
В результате испытаний можно сделать следующие выводы:
С увеличением порядка сужается ширина переходной зоны фильтра.
С увеличение порядка увеличивается время установления фильтра. С увеличением порядка увеличивается требование к вычислительным ресурсам системы.
Таким образом, при проектировании цифрового фильтра наиболее целесообразно выбирать наименьший порядок фильтра, который обеспечит достаточное ослабления помех в сигнале.
13
Документ
Категория
Рефераты
Просмотров
22
Размер файла
494 Кб
Теги
лаба
1/--страниц
Пожаловаться на содержимое документа