Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 3
з дисципліни:
“Проектування комп'ютерних засобів обробки сигналів і зображень”
на тему:
Розрахунок і побудова цифрових СІХ фільтрів з частотною вибіркою. Фільтрація складених сигналів
Мета
Ознайомитись з різними типами цифрових фільтрів, навчитись розраховувати різні типи фільтрів і застосовувати їх на практиці. Дослідити використання вагових функцій при побудові частотних фільтрів з скінченною імпульсною характеристикою.
Завдання
Вар
Вхідний сигнал,
t=0..1000
Частоти вхідного сигналу, кГц,ωn
Фільтр
Частоти фільтра,кГц
Частота
дискретизації,
кГц
Ширина смуги переходу, кГц
Затухання в смузі послаблення,дБ
16
1,0
6,0
9,0
ФНЧ
0,3
4
0,24
-113,9
Імапульсна характеристика ідеального фільтра:
Тип фільтра
hD(n), n≠0
hD(n), n=0
ФНЧ
Характеристика вагової функції:
Тип вікна
Рівень бокових пелюсток, дБ
Ширина перехідної зони(N=256)
Аналітичний вираз
Тюкі
-22
0,0072
а=0,5
Теоретичні відомості
Фільтр — це система , що вибірково змінює форму сигналу (амплітудно-частотну або фазово-частотну характеристику). Основними цілями фільтрації є: покращання якості сигналу, виділення із сигналів інформації або розділення, об’єднаних раніше, сигналів для, наприклад, ефективного використання доступного каналу зв’язку.
Важливу роль в цифровому опрацюванні сигналів відіграють цифрові фільтри. В порівнянні з аналоговими фільтрами вини переважають у багатьох областях (стиск даних, біомедичне опрацювання сигналів, опрацювання мови, опрацювання зображень, передача даних, цифрове аудіо, телефонне ехопослаблення), так як володіють рядом переваг, частина з яких описана нижче:
цифрові фільтри(ЦФ) мають характеристики, отримати які на аналогових фільтрах (АФ) неможливо (лінійна фазова характеристика) ;
на відміну від АФ, продуктивність ЦФ не залежить від змін середовища (зміна температури, вологості, тиску). Таким чином ЦФ не потребують періодичного калібрування;
якщо фільтр(Ф) побудований з використанням програмованого процесора, його частотна характеристика може налаштовуватись автоматично (такі процесори широко застосовуються а адаптивних фільтрах);
один ЦФ може опрацьовувати декілька вхідних сигналів або каналів без дублювання апаратних блоків;
фільтровані та не фільтровані дані можна зберігати для наступного використання;
можна легко використовувати здобутки із області технологій НВІС і отримати невеликі ЦФ з пониженою потужністю споживання і більш низькою ціною;
на практиці точність, яку можна отримати при використанні АФ обмежена. Точність цифрових фільтрів обмежена довжиною слова використаних даних;
продуктивність ЦФ однакова для всіх пристроїв серії;
ЦФ можуть використовуватись при дуже низьких частотах( біомедичні дослідження). Крім того, ЦФ можуть використовуватись у великому діапазоні частот, для цього достатньо просто змінювати частоту дискретизації.
Проте, в порівнянні з АФ, ЦФ мають і ряд недостатків:
обмеження швидкості, максимальна ширина смуги сигналів, які в реальному часі спроможні опрацьовувати ЦФ, значно вужча, ніж у АФ. В задачах реального часу процес перетворення “аналоговий – цифровий – аналоговий” вводить обмеження по швидкості на продуктивність ЦФ. Найвищу частоту дискретизації, з якою може працювати фільтр, обмежує час конвертації АЦП і час встановлення сигналу ЦАП. Крім того, швидкість роботи ЦФ залежить від швидкості роботи цифрового процесора і числа арифметичних операцій, які необхідно виконати в алгоритмі фільтрації, і збільшується, коли характеристика фільтра стає більш стиснутою.
вплив кінцевої розрядності. ЦФ піддаються впливу шуму АЦП, що виникає при квантуванні неперервного сигналу, і шуму заокруглення, який виникає при обчисленнях. При використанні рекурсивних фільтрів високих порядків накопичення шуму заокруглення може призвести до нестійкості фільтра.
значний час розробки і реалізації. Розробка і реалізація ЦФ, особливо реалізація апаратного забезпечення можуть виконуватись набагато довше, ніж подібні процедури для АФ.
Виконання
Використовуючи таблиці , виберемо hD(n) для ФНЧ
Із таблиці, випливає що вимоги до затухання в смузі послаблення задовольняють функції прямокутного вікна. Тоді . Для N=256 смуга пропускання рівна 0,0161 то згідно формули (8) знаходимо значення коефіцієнта . Знаходимо значення N при , , візьмемо N=158, і коефіцієнти будуть рівні
де
Внаслідок ефекту змазування характеристики фільтра, що вводиться ваговою функцією, частота зрізу отриманого фільтра буде відрізнятися від заданої в специфікації, щоб врахувати цей ефект, використаємо — центр смуги переходу:
Обчислюємо значення hD(n) згідно виразу (7).
Оскільки симетрична функції то варто обчислити лише її значення на проміжку
n=0:
n=1:
n=2:
n=158:
Обчисливши всі коефіцієнти, решта коефіцієнтів знаходимо із правила симетріїі .
Отримані коефіцієнти підставляємо у вираз
,
,
,
де x(-n)=0.
Лістинг
//--------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "math.h"
#include "Unit1.h"
//--------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double p=3.14;
double X[1000]; //масив для вхідного сигналу
double Y[1000]; //масив для вихідного сигналу
double w[108]; //масив для вагової функції
double hd[108]; //масив для ідеальної частотної харaктеристики
double H[108]; //масив для реальної частотної характеристики
double fftX[1000];
double fftY[1000];
double re;
double im;
int N;
for (int k=0; k<1000; k++){
X[k]=cos(p*1.7*k)+cos(p*3.789*k)+cos(p*6.3*k); //вхідний сигнал
}
for (int i=0; i<54; i++)
{
w[i]=0.5*(1+cos(p*((i-0.5*N/2)/(0.5*N)))); //вагова функція
}
for (int i=1; i<54; i++){
if (i==0)
hd[i]=2*0.122;
else
hd[i]=(2*(0.122*sin(i*(2*p*0.122))))/(i*(2*p*0.122)); //ідеальна частотна характеристика
H[i-1]=hd[i-1]*w[i-1]; //реальна частотна характеристика
}
for (int m=0; m<1000; m++){
Y[m]=0;
for (int n=0; n<54; n++){
int k=n-54;
int r=m-n;
if (k<0)
k=-k;
if (r<0)
r=-r;
Y[m]+=H[k]*X[r]; //вихідний сигнал
}
}
// пертворення фурє для віхідного і вихідного сигналу
N=200;
for (int k = 0; k < N; k++)//
{
re = 0.0;
im = 0.0;
for (int n = 0; n < N; n++)
{
re += X[n] * cos(2 * p * k * n / N);
im -= X[n] * sin(2 * p * k * n / N);
}
fftX[k] = sqrt(pow(re,2) + pow(im,2)) / (N / 2);
re = 0.0;
im = 0.0;
for (int s = 0; s < N; s++)
{
re += Y[s] * cos(2 * p * k * s / N);
im -= Y[s] * sin(2 * p * k * s / N);
}
fftY[k] = sqrt(pow(re,2) + pow(im,2)) / (N / 2);
if (fftY[k]<=0.26)
fftY[k]=0;
}
// вивід графіків
for(int i=0; i<1000; i++){
Series1->AddXY(i, X[i] );
Series2->AddXY(i, fftX[i] );
Series3->AddXY(i, Y[i] );
Series4->AddXY(i, fftY[i] );
}
for(int i=0, n=0; i<108; i++){
n=i-54;
if (n<0)
n=-n;
Series5->AddXY(i, hd[n] ); //-H
Series6->AddXY(i, w[n] );
}
}
//--------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
Series5->Clear();
Series6->Clear();
}
//-----------------------------------------------------------------------
Результат виконання програми
/
Рис.1. Результати роботи програми.
Висновок:
В даній лабораторній роботі я ознайомився з різними типами цифрових фільтрів, навчився розраховувати смуговий фільтр і застосовувати його на практиці. Дослідив використання вагових функцій при побудові частотних фільтрів з скінченною імпульсною характеристикою.