Мiнiстерство освiти і науки України
Національний університет “Львівська політехніка”
/
Лабораторна робота №2
з диципліни: «Цифрова обробка сигналів»
на тему:«ДИСКРЕТИЗАЦІЯ І КВАНТУВАННЯ СИГНАЛІВ»
1. Завдання
Форма сигналу:
Варіант
№
Параметри сигналу
А1
А2
А3
А4
4
0,48
23
-5
-17
13
1/7
15
5
0
Тобто, аналітичний запис сигналу такий:
2.Аналітичний розрахунок кроку дискретизації та періоду сигналу
Згідно теореми Котельникова: , де : - гранична частота. Оскільки, заданий сигнал містить різні частоти, то граничною буде найбільша з них: .
Отже: .
Підставивши отримане значення у теорему Котельникова, маємо крок дискретизації:
Для знаходження періоду заданого сигналу слід знайти найменше спільне кратне між періодами всіх окремих складових сигналу. Таких частин є чотири (чотири доданки присутні в аналітичному представленні сигналу):
; ;
;
Як відомо, амплітуда та фаза не впливають на період сигналу, тому до уваги слід брати лише частоту. Отже, складові заданого сигналу мають такі періоди: ; ; ; . Таким чином період заданого складеного сигналу становить:
clearall
//очистка пам’яті
clc
//закриття всіх графічних вікон
close()
//очистка екрану
A1=0.48; A2=23; A3=-5; A4=-17;
//амплітуда
w1=13; w2=1/7; w3=15; w4=5;
//частота
phi1=%pi/7; phi2=%pi/5; phi3=0; phi4==%pi/4;
//фаза
M=2^4;
//кількість рівнів квантування
koef=2^1;
//коефіцієнт кількості відліків
w_gr=max([w1,w2,w4,w3]);
//гранична кругова частота
f_gr=w_gr/(2*%pi);
//гранична лінійна частота
dt=1/(2*f_gr*koef);
//дискрет часу за теоремою //Котельникова
T=14*%pi;
//період з аналітичних розрахунків
t=0:dt:T-dt;
//вектор часу для одного періоду
x=A1*cos(w1*t+phi1)-A2*sin(w2*t+phi2)+A3*sin(w3*t+phi3)-A4*cos(w4*t+phi4);
//вектор дискретного сигналу
maxA=max(abs(x))
//максимальне значення амплітуди
minA=-maxA
//мінімальне значення амплітуди
N=length(x);
//довжина вектору сигналу
k=(maxA-minA)/(M-1);
//квант амплітуди
K=minA:k:maxA;
//вектор рівнів квантування
y=floor(x/k)*k;
ifmodulo(M,2)==0
y=y+k/2;
end;
//округлення дискретного значення //сигналу до найближчого рівня //квантування, а отже, отримання //квантованого, тобто цифрового //сигналу
KK=ones(N,1)*K; plot(t,KK,'k--')
ff=gca()
ff.auto_ticks=["on","on","on"]
xlabel('Час,с'); ylabel('Рівні квантування')
//відображення рівнів квантування
plot2d(t,x,3)
//графік дискретного сигналу
plot2d2(t,y,5)
//графік квантованого сигналу
a=max(abs(y-x))
disp(a,"a=")
//абсолютна похибка
b=(1/N)*(sum(y)-sum(x))
disp(b,"b=")
//середня похибка
d=(1/N)*sum((y-x).^2)
disp(d,"d=")
//дисперсія
3. Текст програми
clear all
clc
close()
A1=0.48; A2=23; A3=-5; A4=-17;
w1=13; w2=1/7; w3=15; w4=5;
phi1=%pi/7; phi2=%pi/5; phi3=0; phi4==%pi/4;
M=2^4;
koef=2^1;
w_gr=max([w1,w2,w4,w3]);
f_gr=w_gr/(2*%pi);
dt=1/(2*f_gr*koef);
T=14*%pi;
t=0:dt:T-dt;
x=A1*cos(w1*t+phi1)-A2*sin(w2*t+phi2)+A3*sin(w3*t+phi3)-A4*cos(w4*t+phi4);
maxA=max(abs(x))
minA=-maxA
N=length(x);
k=(maxA-minA)/(M-1);
K=minA:k:maxA;
y=floor(x/k)*k;
if modulo(M,2)==0
y=y+k/2;
end;
KK=ones(N,1)*K; plot(t,KK,'k--')
ff=gca()
ff.auto_ticks=["on","on","on"]
xlabel('Час,с'); ylabel('Рівніквантування')
plot2d(t,x,3)
plot2d2(t,y,5)
a=max(abs(y-x))
disp(a,"a=")
b=(1/N)*(sum(y)-sum(x))
disp(b,"b=")
d=(1/N)*sum((y-x).^2)
disp(d,"d=")
4. Оцінка похибки оцифровування
Koef
M
A
B
D
1
8
5.6328845
1.178D-14
10.714905
32
1.2693674
1.064D-14
0.5337596
256
0.1546910
1.071D-14
0.0080766
2
8
6.3703483
1.652D-14
13.339752
32
1.4358915
1.605D-14
0.7080139
256
0.1746814
1.533D-14
0.0094748
4
8
6.3703483
1.243D-14
13.853924
32
1.4392162
1.219D-14
0.7099387
256
0.1746814
1.179D-14
0.0102858
8
8
6.3801158
- 6.767D-16
14.10636
32
1.440516
- 5.414D-16
0.7113771
256
0.1752263
- 2.978D-15
0.0102951
5. Графіки дискр...