SPRAWOZDANIE
Laboratorium
Przetwarzanie Sygnałów
Ćw. Nr 1: Próbkowanie i rekonstrukcja sygnałów
Damian Żaczek
Nr indeksu: 163785
Grupa: Czwartek 14-16
Zadanie 1
Wygenerować N=128 próbek sinusoidy o pulsacji znormalizowanej:
ta=[0:0.6298:80];
tb=[0:0.1258:16];
tc=[0:0.0629:8];
td=[0:0.01259:1.6];
te=[0:0.0551:7];
xa=sin(pi/20*ta);
xb=sin(pi/4*tb);
xc=sin(pi/2*tc);
xd=sin((pi/2+2*pi)*td);
xe=sin((pi/2+0.01)*tc);
figure;
hold on;
stem(ta, xa)
title('sin(pi/20t)');
xlabel('time [s]');
ylabel('sygnaly');
figure;
hold on;
stem(tb, xb)
title('sin(pi/4t)');
xlabel('time [s]');
ylabel('sygnaly');
figure;
hold on;
stem(tc, xc)
title('sin(pi/2t)');
xlabel('time [s]');
ylabel('sygnaly');
figure;
hold on;
stem(td, xd)
title('sin((pi/2+2pi)t)');
xlabel('time [s]');
ylabel('sygnaly');
figure;
hold on;
stem(tc, xe)
title('sin((pi/2+0.01)t)');
xlabel('time [s]');
ylabel('sygnaly');
Na powyższych wykresach przedstawiłem po 2 okresy każdej sinusoidy. Można z nich wywnioskować, iż im mniejsza pulsacja tym większy okres sinusoidy.
Zadanie 2
Wygenerować N=128 próbek sinusoidy o częstotliwości f=2000Hz próbkowanej z częstotliwością fs:
fs1=4000;
fs2=4020;
fs3=8000;
fs4=19000;
fs5=44000;
f=2000;
n=128;
T1=1/fs1;
t1=[0:T1:n*T1];
T2=1/fs2;
t2=[0:T2:n*T2];
T3=1/fs3;
t3=[0:T3:n*T3];
T4=1/fs4;
t4=[0:T4:n*T4];
T5=1/fs5;
t5=[0:T5:n*T5];
y1=sin(2*pi*f*t1);
figure;
stem(t1,y1)
title('fs1=4000 Hz');
xlabel('time [s]');
ylabel('sygnaly');
y2=sin(2*pi*f*t2);
figure;
stem(t2,y2)
title('fs2=4020 Hz');
xlabel('time [s]');
ylabel('sygnaly');
y3=sin(2*pi*f*t3);
figure;
stem(t3,y3)
title('fs3=8000 Hz');
xlabel('time [s]');
ylabel('sygnaly');
y4=sin(2*pi*f*t4);
figure;
stem(t4,y4)
title('fs4=19000 Hz');
xlabel('time [s]');
ylabel('sygnaly');
y5=sin(2*pi*f*t5);
figure;
stem(t5,y5)
title('fs5=44000 Hz');
xlabel('time [s]');
ylabel('sygnaly');
Częstotliwość próbkowania to liczba próbek wykonanych w jednostce czasu. Im jest większa tym większa szansa na uzyskanie sygnału dyskretnego zbliżonego do sygnału ciągłego. Im mniejszy okres sygnału dyskretnego tym większa powinna być częstotliwość próbkowania tak aby jak najwięcej próbek zmieściło się w jednym okresie.
Zadanie 3
Wygenerować N=128 próbek sinusoidy o częstotliwości f=2000 Hz próbkowanej z częstotliwością fs=4000Hz zmieniając przesunięcie fazowe sygnału.
fs1=4000;
f=2000;
n=128;
T1=1/fs1;
t1=[0:T1:n*T1];
y1=sin(2*pi*f*t1+pi*0.11);
figure;
stem(t1,y1)
title('fi=0.11pi');
xlabel('time [s]');
ylabel('sygnaly');
y2=sin(2*pi*f*t1+pi/4);
figure;
stem(t1,y2)
title('fi=pi/4');
xlabel('time [s]');
ylabel('sygnaly');
y3=sin(2*pi*f*t1+pi/2);
figure;
stem(t1,y3)
title('fi=pi/2');
xlabel('time [s]');
ylabel('sygnaly');
y4=sin(2*pi*f*t1);
figure;
stem(t1,y4)
title('fi=0');
xlabel('time [s]');
ylabel('sygnaly');
Faza początkowa sygnału przesuwa sygnał o daną wartość oraz może mieć bardzo duży wpływ na odwzorowanie sygnału.
Zadanie 4
Wygenerować N=128 próbek sinusoidy o podanych częstotliwościach próbkowanych z częstotliwością fs=4000 Hz
fs=4000;
f1=1800;
f2=2200;
f3=5800;
n=128;
T1=1/fs;
t1=[0:T1:(n-1)*T1];
y1=sin(2*pi*f1*t1);
figure;
stem(t1,y1)
title('f1=1800 Hz');
xlabel('time [s]');
ylabel('sygnaly');
y2=sin(2*pi*f2*t1);
figure;
stem(t1,y2)
title('f2=2200 Hz');
xlabel('time [s]');
ylabel('sygnaly');
y3=sin(2*pi*f3*t1);
figure;
stem(t1,y3)
title('f3=5800 Hz');
xlabel('time [s]');
ylabel('sygnaly');
Wykresy na pierwszy rzut oka nie wiele się od siebie różnią. Dopiero po znacznym zwiększeniu częstotliwości próbkowania można zacząć dostrzegać różnice tj. im większa częstotliwość sygnału tym gęściej jest upakowany czyli jego okres maleje.
Zadanie 5
fsa=44000;
fs=1000;
f=100;
n=1023;
T1=1/fsa;
t1=[0:T1:n*T1];
y1=sin(2*pi*f*t1);
figure;
plot(t1,y1)
hold on
T2=1/fs;
t2=[0:T2:n*T1];
y2=sin(2*pi*f*t2);
stem(t2,y2,'r')
hold on
title('Sygnał i jego próbki')
xlabel('time [s]');
ylabel('sygnały');
y3=zeros(size(t1));
for k = 1:length(t2/8),
st = y2(k)*sinc(fs*(t1-t2(k)));
y3 = y3 + st;
end;
figure;
plot(t1,y1)
hold on;
plot(t1,y3,'r')
title('rekonstrukcja z obciętej funkcji sinc');
xlabel('time [s]');
ylabel('sygnały');
t=[0:0.0005:0.023];
figure
y4=interp1(t2,y2,t, 'linear');
plot(t,y4,'r',t1,y1)
title('interpolacja liniowa');
xlabel('time [s]');
ylabel('sygnały');
figure
y5=interp1(t2,y2,t, 'nearest');
plot(t,y5,'r',t1,y1)
title('interpolacja zerowego rzędu');
xlabel('time [s]');
ylabel('sygnały');
Model sygnału analogowego i jego próbki.
Najdokładniejszą wydaje się być rekonstrukcja z wykorzystaniem obciętej funkcji sinc. Interpolacja liniowa jedynie łączy ze sobą spróbkowane punkty więc jej skuteczność wymaga wielu próbek, natomiast interpolacja zerowego rzędu nie sprawdza się przy rekonstrukcji sygnałów sinusoidalnych z uwagi na prostokątne łączenie punktów.