МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НУ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра САПР
ЗВІТ
про виконання лабораторної роботи № 1
на тему:
ДОСЛІДЖЕННЯ СПЕКТРІВ ДИСКРЕТНИХ СИГНАЛІВ
З курсу “ Методи та засоби комп’ютерних інформаційних технологій”
Львів 2009
МЕТА РОБОТИ
Мета роботи – отримати практичні навики використання програми спектрального аналізу, дослідити спектри дискретних сигналів різної форми та визначити їх особливості.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Визначення спектральних складових дискретних (дискретизованих) сигналів.
Обробка та дослідження сигналів з використанням персональних ЕОМ вимагає їх дискретного цифрового представлення. При цьому сигнали описуються сукупністю N вiдлiкiв (xk, k=0,N-1) на заданому iнтервалi часу (0,T). Ця сукупність вiдлiкiв може описувати дискретний сигнал Xд(t), або представляти миттєвi значення неперервного сигналу X(t) у певні моменти часу. В останньому випадку розглядається дискретизована неперервна функцiя, яка при виконаннi певних умов буде адекватно представляти неперервну функцiю з необхiдною точнiстю (питання дискретизацii неперервних функцiй розглядаються в iншiй лабораторній роботi).
Якщо задану сукупнiсть виборок подумки повторити безмежну кiлькiсть разів, то досліджуваний сигнал можна вважати перiодичним. Для визначення спектру можна ввести певну математичну модель дискретного періодичного сигналу i використати розклад у ряд Фур'є. Якщо сигнал неперервний, то за допомогою послiдовностi дельта-iмпульсiв можна отримати його дискретне представлення на iнтервалi (0,T).
(1)
де: xk = X(k*d) - вiдлiки у k-й точцi; d – інтервал дискретизації; N=T/d.
Дискретну модель можна представити комплексним рядом Фур'є:
(2)
з коефiцiєнтами
(3)
Пiдставивши (1) в (3) пiсля нескладних математичних перетворень отримаємо
(4)
або у тригонометричнiй формi
(5)
(6)
(7)
(8)
Необхiдно зауважити, що при обчисленнi кута з використанням арктангенса потрiбно враховувати знаки Cns та Сnс для правильного визначення квадранта.
Вказанi формули визначають послiдовнiсть коефiцiєнтiв спектральних складових заданого вiдлiками сигналу i описують дискретне перетворення Фур'є (ДПФ).
Основнi властивостi ДПФ:
ДПФ є лінійним перетворенням, тобто ДПФ суми сигналiв є сума коефiцiентiв ДПФ кожного з них, а змiна амплiтуд сигналу в М-разiв викликає таку ж змiну вiдповiдних коефiцiєнтiв С(n).
Кiлькiсть рiзних коефiцiєнтiв С(0),...,С(N-1) визначається кiлькiстю вiдлікiв N (якщо n=N, то С(n)=C(0), тобто сигнали i спектри перiодично повторюються).
Коефiцiєнт С(0) (нульова гармонiка, яка визначає постiйну складову є середнiм значенням всiх вiдлiкiв.
(9)
Якщо кiлькicть вiдлiкiв N - парне число, то
(10)
Якщо значення вiдлiкiв xk- дiйснi числа, то коефiцiенти ДПФ, номери яких симетричнi вiдносно N/2 утворюють комплекснi спряженi пари
(11)
Тому можна вважати, що коефiцiенти С(N/2+1),...C(N-1) вiдповiдають вiд'ємним частотам.
Вiдновлення початкового сигналу по коефіцієнтах ДПФ.
Якщо на основi заданих вiдлiкiв знайденi коефiцiєнти ДПФ (С(0),...,С(N/2)), то по цих коефiцiєнтах завжди можна вiдновити початковий сигнал Хд(t), або дискретизований сигнал X(t). Для такого сигналу ряд Фур'є записується скiнченою сумою
(12)
де: │Сi│ - модуль амплiтуди вiдповiдної гармонiки, а (i - її фаза.
Зворотнє перетворення Фур'є.
Нехай коефiцiенти Сn, що утворюють ДПФ, заданi. Якщо у формулi (2) t = k*d i сумується скiнченна кiлькiсть членiв ряду, якi вiдповiдають iснуючим гармонiкам у спектрi сигналу, то отримуємо таку формулу для обчислення значень вiдлiкiв
(13)
Ця формула є зворотнiм дискретним перетворенням Фур'е (ЗДПФ). Формула прямого (2) та зворотнього (13) дискретного перетворення Фур'є є дискретними аналогами пари перетворень Фур'є для неперервного сигналу.
ВИКОНАННЯ ЛАБОРАТОРНИХ ЗАВДАНЬ
Напишіть програму (чи вручну за допомогою текстового редактора) згенеруйте N значень відліків для дискретного представлення таких функцій:
- симетричний прямокутний імпульс (меандр);
- несиметричний прямокутний імпульс тривалістю t1=n*T/N та t2=T-n*Т/N (n - номер студента в групі n = 25 );
- симетричний трикутний імпульс тривалістю Т;
- пилоподібній імпульс тривалістю T;
- два пилоподібних імпульси тривалістю Т/2;
- пачку з 10 прямокутних імпульсів (меандр) тривалістю T/20.
Амплітуда імпульсів рівна 1.0, період Т=2.0, кількість відліків N=200 (для відліків заданих вручну N=20).
За допомогою програми дискретного перетворення Фур'є визначіть спектри вказаних імпульсів. На основі отриманих спектрів зробіть висновки про форму огинаючої спектральних складових та вплив форми імпульсів на ширину спектру.
Користуючись реалізованою у програмі можливістю відсікати високочастотні складові спектру, на основі аналізу форми відновлених імпульсів зробіть висновки про практичну ширину спектру для кожного з них. Графіки спектрів, а також заданих та відновленіх функцій виведіть на друк.
Код програми, яка генерує файли дискретного представлення функцій
program v1;
var i,n,ns,k,ti1,ti2:integer;
f:text;
t1,t2,t:real;
begin
n:=200;
t:=2.0;
Write('Enter your variant -->');
readln(ns);
t1:=ns*t/N;
t2:=t-(ns*t/N);
Writeln('t1=',t1:4:2);
Writeln('t2=',t2:4:2);
t1:=t1*100;
t2:=t2*100;
ti1:=trunc(t1);
ti2:=trunc(t2);
{assign(f,'D:\f1.txt');
rewrite(f);
writeln(f,n);
for i:=0 to n-1 do
begin
write(f,i,' ');
write(f,'.',i:2,'000000000000D+00');
writeln(f,' .100000000000000D+01');
end;
close(f);
assign(f,'D:\f2.txt');
rewrite(f);
writeln(f,n);
for i:=0 to ti1-1 do
begin
write(f,i,' ');
write(f,'.',i,'00000000000000D+00');
writeln(f,' .100000000000000D+01');
end;
for i:=ti1 to ti2+ti1-1 do
begin
write(f,i,' ');
write(f,'.',i,'00000000000000D+00');
writeln(f,' .000000000000000D+01');
end;
close(f);
assign(f,'D:\f3.txt');
rewrite(f);
writeln(f,n);
for i:=0 to n-101 do
begin
write(f,i,' ');
write(f,'.',i:2,'0000000000000D+00');
writeln(f,' .',i:2,'000000000000D+01');
end;
k:=i+1;
for i:=n-100 to n do
begin
write(f,i,' ');
write(f,'.',i:2,'0000000000000D+00');
writeln(f,' .',k:2,'000000000000D+01');
k:=k-1;
end;
close(f); }
{assign(f,'D:\f4.txt');
rewrite(f);
writeln(f,100);
for i:=0 to n-101 do
begin
write(f,i,' ');
write(f,'.',i:2,'0000000000000D+00');
writeln(f,' .',i:2,'000000000000D+01');
end;
close(f);
assign(f,'D:\f5.txt');
rewrite(f);
writeln(f,n);
for i:=0 to n-100 do
begin
write(f,i,' ');
write(f,'.',i:2,'000000000000D+00');
writeln(f,' .',i:2,'0000000000000D+01');
end;
k:=0;
for i:=n-100 to n-1 do
begin
write(f,i,' ');
write(f,'.',i:2,'00000000000D+00');
writeln(f,' .',k:2,'000000000000D+01');
k:=k+1;
end;
close(f); }
end.
Симетричний прямокутний сигнал
Несиметричний прямокутний імпульс
Симетричний трикутний імпульс
Пилоподібний імпульс
Два пилоподібні імпульси
Пачка з десяти прямокутних імпульсів (меандр)
Згенеруйте 10 відліків (N=10) для пилоподібного імпульсу з амплітудою 1.0 та періодом 2.0. Отримайте спектр цього сигналу і відновіть сигнал по отриманих спектральних складових. Згенеровані відліки, значення спектральних складових та значення відновленого сигналу виведіть на друк. Для згенерованих значень відліків напишіть формулу, підставте значення і вручну обчисліть амплітуду та фазу першої гармоніки. Порівняйте отримане значення з обчисленим програмою. На основі програмно обчислених значень спектральних складових вручну відновіть значення функції у точці третього відліку. Формули з підставленими значеннями та результатами обчислень приведіть у звіті.
Дано: N=10; T=2; A=1;
Формули: - косинусоїдальна складова спектру; - синусоїдальна складова спектру, де - номер спектру; -кількість відліків; - порядок точки; - відновлення значення функції у певній точці.
Таблиця 7
K
0
1
2
3
4
5
6
7
8
9
T
0
0,2
0,4
0,6
0,8
1
1,2
1,4
1,6
1,8
X
0
0,2
0,4
0,6
0,8
1
0
0
0
0
Програма, що обчислює значення - косинусоїдальну складову спектру.
program laba1;
var
n, i:integer;
c1c, x, t, dt, k, p, suma, s:real;
begin
writeln('Vvestu kilkist tochok');
readln(n);
writeln('Vvestu period');
readln(p);
dt:=p/n;
s:=0;
x:=0;
k:=0;
writeln('dt = ', dt:4:2);
for i:=1 to 6 do
begin
c1c:=x*(cos(2*pi*1*k/10));
x:=x+dt;
k:=k+1;
s:=s+c1c;
writeln(c1c:8:6);
end;
suma:=1/10*s;
writeln('suma', suma:8:6);
end.
Результат обчислення: - 0,1547
Програма, що обчислює значення - синусоїдальну складову спектру.
program laba1;
var
n, i:integer;
c1c, x, t, dt, k, p, suma, s:real;
begin
writeln('Vvestu kilkist tochok');
readln(n);
writeln('Vvestu period');
readln(p);
dt:=p/n;
s:=0;
x:=0;
k:=0;
writeln('dt = ', dt:4:2);
for i:=1 to 6 do
begin
c1c:=x*(sin(2*pi*1*k/10));
x:=x+dt;
k:=k+1;
s:=s+c1c;
writeln(c1c:8:6);
end;
suma:=-1/10*s;
writeln('suma', suma:8:6);
end.
Результат обчислення: - 0,1538
Обчислюємо: - косинусоїдальну складову спектру вручну.
Обчислюємо: - синусоїдальну складову спектру вручну.
Обчислюємо
Обчислюємо фазу
(в радіанах)
Обчислюємо відновлення значення функції у точці третього відліку
Обчислене відновлене значення функції у точці третього відліку зійшлось з програмним обчисленням.
10
0 .000000000000000D+00 .0000000000000000D+00
1 .200000000000000D+00 .0100000000000000D+00
2 .400000000000000D+00 .0200000000000000D+00
3 .600000000000000D+00 .0300000000000000D+00
4 .800000000000000D+00 .0400000000000000D+00
5 .1000000000000000D+00 .0500000000000000D+00
6 .1200000000000000D+00 .0600000000000000D+00
7 .1400000000000000D+00 .0700000000000000D+00
8 .1600000000000000D+00 .0800000000000000D+00
9 .1800000000000000D+00 .0900000000000000D+00
0 .450000000000000D-01 .000000000000000D+00
1 .161803398874990D-01 .188495559215388D+01
2 .850650808352040D-02 .219911485751286D+01
3 .618033988749895D-02 .251327412287184D+01
4 .525731112119134D-02 .282743338823082D+01
5 .500000000000000D-02 .314159265358979D+01
6 .525731112119134D-02 -.282743338823082D+01
7 .618033988749895D-02 -.251327412287184D+01
8 .850650808352040D-02 -.219911485751286D+01
9 .161803398874990D-01 -.188495559215388D+01
10 .450000000000000D-01 .000000000000000D+00
Взявши за основу файл значень відліків для пачки з 10 прямокутних імпульсів, вручну (за допомогою програми Norton Commander) зформуйте послідовність імпульсів для передачі байта у стандарті послідовного інтерфейсу: перший біт (стартовий) - рівний одиниці, наступні вісім (інформаційні) задають значення байта (номер студента у групі = 25 = 0001 1001 заданий двома тетрадами) десятий біт (стоповий) - завжди рівний нулю. Кожен біт описується двадцятьма відліками. Програмою спектрального аналізу визначіть спектр згенерованого сигналу, дослідіть вплив урізання високочастотних складових на форму відновленого сигналу, зробіть висновки щодо вимог до смуги пропускання каналу зв'язку. Отримані графіки виведіть на друк.
Сформована послідовність імпульсів для передачі байта у стандарті послідовного інтерфейсу
1
0
0
0
0
0
1
0
1
0
На основі значень відліків, отриманих в пункті 5, сформуйте відліки для послідовності імпульсів з використанням манчестерського кодування (одиниця кодується переходом 1/0 посередині імпульсу, а нуль кодується переходом 0/1). Знайдіть спектр отриманого сигналу, дослідіть вплив високочастотних складових на форму відновленого сигналу, обґрунтуйте вимоги до частотних характеристик каналу зв'язку. Графіки виведіть на друк.
Сформована послідовність імпульсів для передачі байта з використанням манчестерського кодування
1
0
0
1
0
0
1
0
1
0
ВИСНОВОК
Отримав практичні навики використання програми спектрального аналізу. Дослідив спектри цих дискретних сигналів різної форми (симетричний прямокутний, несиметричний прямокутний, симетричний трикутний, пилоподібний, два пилоподібних, пачку з 10 прямокутних) та визначив їх особливості та властивості.