POLITECHNIKA WARSZAWSKA
INSTYTUT TECHNOLOGII MATERIAŁOWYCH
LABORATORIUM
PODSTAW TEORII INFORMACJI I
ANALIZY SYGNAŁU
Ćwiczenie 1
Zapis i odczyt sygnału w programie MATLAB
Opracował: dr inż. Leszek Moszczyński
Ćwiczenie 1
Cel ćwiczenia
Zadania do wykonania:
Wyczyszczenie ekranu i usunięcie zmiennych z pamięci operacyjnej MATLABA,
clc
clear
Listowanie zawartości katalogu macierzystego
>> ls
<< whois
Zapis danych (wektor, macierz).
Zapisz wektor x złożony z 10 elementów np.:
x = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
x = [1 2 3 4 5 6 7 8 9];
Sprawdź jak został zapisany ten wektor. Co zyskujemy jeśli w zapisie pominięty zostanie znak średnika?
W zapisie jak w pkt. 1 dokonaj zmiany wprowadzając wewnątrz nawiasu średniki.
y = [1 2 3; 4 5 6; 7 8 9];
Co daje taki zapis?
Sprawdź inny sposób tworzenia wektora.
z = 0:1:10 v = -5:1:5
x = 10:-1:0 u = .05*(0:20)
Wyjaśnij powyższy sposób zapisu wektorowego z , v, u i x.
Policz z ilu elementów składają się te wektory. Sprawdź działanie polecenia
length(z)
4. Do tworzenia wektorów można użyć także funkcji linspace
% LINASPACE funkcja generująca wektor liniowy
% linspace(<pierwszy elem. wekt.>,<ostatni elem.>,<liczba elem.>)
% Przykład linspace(0,1,21)
Uwaga znak % to początek komentarza
Napisz polecenie help linspace
Sprawdź działanie tej funkcji na własnym przykładzie.
Jeśli pierwszym elementem wektora o długości n jest a, a ostatnim b to k -ty element polecenia linspace obliczyć można z wzoru:
uzupełnij ten wzór wstawiając w miejsce kropek brakujące oznaczenia
Do tworzenia wektorów złożonych z zer i jedynek wykorzystywane są polecenia (funkcje) zeros i ones.
Sprawdź działanie polecenia
a = [2 2 zeros(1, 5) 3 3 ones(1, 4)];
Z ilu elementów składa się wektor a?
Zapis sygnału (prezentacja graficzna).
Utwórz wektor czasu t, którego pierwszym elementem jest wartość zero, a kolejne elementy zwiększają się liniowo z co Ts = 1. Długość wektora t powinna być równa długości wektora a (pkt.4).
Narysuj sygnał a stosując polecenie
<<plot (t, a)
Sprawdź jakie wartości uzyskasz wpisując:
t(3)
t(7)
Odczytaj z wykresu wartości sygnału t przy t = 1, 2, 2.5, 3. W jaki sposób ustalić wartość sygnału dla t = 2.5?
Narysuj sygnał a stosując polecenie:
<<stem (t, a)
Porównaj zapisy sygnału uzyskane na rys. 1 i 2
figure (1)
plot (t, a)
figure (2)
stem(t, a)
Jak wygląda sygnał y=a(-t). Utwórz go i narysuj jako figure(3)
ZASTOSOWANIE
Przykładowo jako wektor sygnału można traktować dane o średniej miesięcznej zawartości ozonu w atmosferze w Polsce w roku 2001 zestawione w Tabeli 1.
Tabela 1
W Matlabie zapis wektorowy danych ma postać:
d = [ 328, 358, 377, 382, 359, 359, 340,...
316, 300, 378, 387, 312 ]
% Trzy kropki oznaczają przeniesienie
% zapisu do następnej linii
% **************************
stem(d)
% rysowanie
axis([0, 13, 0, 400])
title('Zawartość ozonu')
xlabel('miesiąc n')
ylabel('Debson')
Źródło: Mały Rocznik Statystyczny 2003 str. 52.
Jednostką zawartości ozonu w atmosferze jest debson (D) zwany również miliatocentymertem.
Jest to przykład sygnału czasu dyskretnego w którym indeks wektora może przyjmować dowolną wartość dodatnią. Zawartość ozonu w powietrzu może być bowiem odczytywana i podawana w krótszych lub dłuższych odstępach czasu (np. tygodniowych lub miesięcznych).
6. Objaśnij użyty wyżej zapis axis([0, 13, 0, 400])
Zapis prostych sygnałów
Zapisać sygnał podany zależnością:
Utwórz wektor n, a następnie wektor x=2*n+3.
Narysuj dyskretny przebieg sygnału x(n) w podanym zakresie.
Jeśli dla n = -5,-6 i n=5, 6 wartość sygnału jest równa 1, to jak zbudować taki sygnał.
Sygnały parzyste, nieparzyste
Mnożenie skali czasu
Zapis sygnału w matlabie ma postać:
n=-1:0.1:1;
x=n./n.^2+1
figure(1)
stem(n,x)
Uwaga Kropka przy zapisie wektora oznacza, że każdy element wektora podlega oddzielnie realizowanej operacji (np. mnożenia).
Zapisany sygnał jest parzysty czy nieparzysty?
Przeanalizuj co realizuje poniższy dalszy zapis?
b=2;
x1=(n.*b)./(b.*n).^2
figure(2)
stem(n.*b,x1)
b=0.5
x2=(n.*b)./(b.*n).^2
figure(3)
stem(n.*b,x2)
Jak realizowane jest przesunięcie sygnału w prawo i w lewo?
Jeśli nie pamiętasz sprawdź jak działa plik przesuniecie.m dostępny także na stronie POTESU
%___przesuniecie,m____________________________________
%Dany jest sygnal zapisany w jako
t=-2:0.01:0;
v=t+2;
ft=-fliplr(t);
subplot(3,2,1)
plot(t,v)
grid on
title('Sygnal podstawowy')
AXIS([-2 2 -2 2]) % Okresla zakresy sygnalu rysowane na ekranie
subplot(3,2,2)
plot(ft,v, '*')
grid on
title('Oto jak dziala -fliplr')
AXIS([-2 2 -2 2])
% lustrzane odbice sygnalu
fv=fliplr(v);
subplot(3,2,3)
plot(ft,fv, '.')
grid on
title('Lustrzane odbicie sygnalu' )
AXIS([-2 2 -2 2])
% Przesuniecie sygnalu o wartość +2
przes=t+2;
subplot(3,2,4)
plot(przes,v,'.')
grid on
AXIS([-2 2 -2 2])
title('Przesuniecie sygnalu w prawo o 2')
% Przeskalowanie wartosci sygnalu i zmiana slaiiczasu
%Wartosc amplitudy maleje dwokrotnie
%Skala czasu zaweza sie dwukrotnie
%Wpisz potrzebne polecenia
skalt=t/2;
skalv=skalt/2 +2;
subplot(3,2,5)
plot(skalt,skalv,'.')
grid on
AXIS([-2 2 -2 2])
title('Skalowanie sygnalu')
skalt=t/2;
subplot(3,2,6)
plot(skalt,v,'.')
grid on
AXIS([-2 2 -2 2])
title('Przeskalowanie osi czasu')
Literatura:
Kamińska, B. Pinczych. Ćwiczenia z Matlaba przykłady i zadania, MIKOM 2002,
J. Brzózka, Lech Dobraczyński, Programowanie w MATLABIE MIKOM 1998,
R. Lyons, Wprowadzenie do cyfrowego przetwarzania sygnałów, WKŁ 2000
Opanowanie umiejętności tworzenia wektorów danych, rysowanie zbioru danych w postaci dyskretnej i w postaci krzywej ciągłej, odtwarzanie sygnałów zapisanych w postaci wykresów, generowanie sygnałów dyskretnych.
Miesiące |
Zawartość ozonu /debsany/ |
I |
328 |
II |
358 |
III |
377 |
IV |
382 |
V |
359 |
VI |
359 |
VII |
340 |
VIII |
316 |
IX |
300 |
X |
378 |
XI |
387 |
XII |
312 |