Przypomnienie Matlaba.pdf
(
554 KB
)
Pobierz
ÆWICZENIE 0
Andrzej Leśnicki Laboratorium CPS Ćwiczenie 0 1/17
ĆWICZENIE 0
Wprowadzenie do programu MATLAB
1. Celćwiczenia
Ćwiczenie ma na celu powtórzenie wiadomości o programie MATLAB. Nazwa programu jest
skrótem z ang. MATrix LABoratory i wskazuje na podstawową zaletę tego programu jaką jest
duża łatwość i szybkość wykonywania operacji na macierzach. Ponieważ w laboratorium jest
wykonywana ogromna liczba działań na sygnałach dyskretnych i cyfrowych przyjmujących w
komputerze postać macierzy, to oprogramowanie do poszczególnych ćwiczeń laboratoryjnych
przygotowano w postaci interfejsów graficznych napisanych właśnie w języku programu
MATLAB.
2. Podstawowe komendy
Na początku pracy w programie MATLAB należy podać ścieżkę dostępu do miejsca, w
którym przechowujemy indywidualne oprogramowanie i gdzie chcemy przechowywać
wyniki pracy, w tym przypadku ma to być ścieżka dostępu do oprogramowania ćwiczenia 0.
Program MATLAB ma bardzo bogatą bibliotekę gotowego oprogramowania.
Zapoznanie się z tym oprogramowaniem ułatwiają następujące komendy (pamiętajmy, że
znak % poprzedza komentarz):
>>help %Podaje skorowidz tematów pomocy
>>helpwin %Otwiera okno pomocy
>>help sin %Opis wymienionej funkcji MATLABA
>>help SmithChart %Opis wymienionego skryptu MATLABA
>>type SmithChart %Podaje treść wymienionego skryptu
>>lookfor inverse %Poszukuje funkcji związanych z wymienionym słowem kluczowym
MATLABem można posługiwać się jak kalkulatorem (w trakcie edycji do powtarzania
uprzednio napisanych linii bardzo przydatne jest posługiwanie się klawiaturowym znakiem ↑
i znakiem , można też kopiować i wklejać linie):
>> sqrt(2)
ans = %Pod nazwą
ans
jest przechowywana ostatnio obliczona wartość, brak
1.4142 %średnika na końcu linii spowodował natychmiastowe pokazanie wyniku
>> help format %Informacja o formatach zapisu liczb
>> x=1/33;
>> format long e %Zmiana formatu ze standardowego short na long e
>> x
x =
3.030303030303030e-002
>> format rat %Zmiana formatu z long e na rat
>>pi %Komputer „nie potrafi” zapisać dokładnie liczby niewymiernej, a i liczby
ans= %wymierne są zapisywane dokładnie tylko te, które należą do pewnego zbioru.
355/113 %Liczbę niewym. pi komputer przybliża do liczby wym. 355/113 przy tol=1.e-6
↓
Andrzej Leśnicki Laboratorium CPS Ćwiczenie 0 2/17
j
. Zapisano 2j, ale równie dobre jest np. 2*i
%lub 2*sqrt(-1). Inne wartości wbudowane to: pi, eps, realmin, realmax, Inf, NaN. Niestety,
%czasem przez nieuwagę zmieniamy wartość wbudowaną poprzez wykorzystanie nazwy
%stałej do innych celów, np. wstawiając
i
lub
j
jako indeks w pętli for i wówczas
i
lub
j
nie
%będzie już równe − . Dlatego zwłaszcza, gdy na komputerze przed chwilą pracował ktoś
%inny, dajmy >>clear.
>> abs(z) % Inne popularne operacje na liczbie zespolonej to angle, real, imag, conj
ans =
2.2361
=
i
=
−
1
3. Macierze
>>A=[1 2;3,4;... %Macierze wprowadzamy wierszami. Separatorami są spacje lub przecinek.
5 6] %Średnik kończy wiersz. Wielokropek jest znakiem kontynuacji linii (tutaj
% nie był niezbędny).
A =
1 2
3 4
5 6
>> a=1:2:8 %Dwukropek pozwala na skrócony zapis macierzy z krokiem
a =
1 3 5 7
% Trzeba koniecznie przyzwyczaić się do tego, że komputer numeruje ciągi liczbowe
% indeksami od 1 w górę, podczas gdy w większości algorytmów indeksowanie rozpoczyna
% się od 0 w górę (np. przy zapisie dyskretnego sygnału przyczynowego). Z tego powodu
% początkujący programiści popełniają proste błędy i np. mylą się o 1 przy ocenie długości
% ciągu.
>> b=[zeros(1,3),[5:-1:3],ones(1,2)] %Łatwo można złożyć macierz z innych macierzy
b =
0 0 0 5 4 3 1 1
>> b(3:7) %Łatwo można wyciąć macierz z macierzy
ans =
0 5 4 3 1
>> a(2:3)=b(5:6)
a =
1 4 3 7
>> fliplr(b) %Łatwo można odwrócić kolejność elementów (flip left right)
ans =
1 1 3 4 5 0 0 0
>> a=[1,2,3]; b=[4,5,6]; %Można napisać kilka instrukcji oddzielonych średnikami w jednym
%wierszu, ale programiści unikają tego, gdyż zmniejsza to czytelność programu
>> a
.
*b %Mnożenie element po elemencie, wymiary a i b muszą być identyczne,
%kropka
.
przed * jest tutaj niezwykle ważna
ans =
4 10 18
>> a
.
/b %Dzielenie element po elemencie
ans =
0.2500 0.4000 0.5000
>> format short %Powrót do formatu short
>> z=1+2j; %Wartość wbudowana
Andrzej Leśnicki Laboratorium CPS Ćwiczenie 0 3/17
c =
32
>> c=a'*b
c =
4 5 6
8 10 12
12 15 18
>> A=[2,3,5;1,3,2;3,1,4];
>> b=[4,0,6]';
>> x=A\b % Rozwiązanie układu równań liniowych
x =
1
-1
1
→
Pisząc programy w MATLABie należy preferować specjalne instrukcje MATLABowe i
unikać zwłaszcza instrukcji for. Na przykład dokonanie decymacji sygnału (odrzucenie co
drugiej próbki) z użyciem instrukcji MATLABowej y(1:N/2)=x(1:2:N) będzie trwało
znacznie krócej niż wykonanie decymacji z użyciem instrukcji for, co ilustruje poniższy
wykres (uzyskany poprzez wywołanie skryptu >>czasdecymacji).
% Znak „prim” oznaczał powyżej transpozycję macierzy.
>> a=[1,2,3]; b=[4,5,6];
>> c=a*b' % Zwykłe mnożenie macierzy c(
kxm
)=a(k
x
l)*
b
(l
x
m).
Rozmiary, format i wartości zmiennych warto obserwować w obszarze roboczym
MATLABa (View Workspace).
Andrzej Leśnicki Laboratorium CPS Ćwiczenie 0 4/17
4. Wykresy
W programie MATLAB łatwo sporządza się wykresy gotowe do wklejenia do dokumentów,
na przykład program testwykres.m (wykonanie >>testwykres):
t=0:1:10; T=10;
x=cos(2*pi*t/T);
subplot(2,2,1), plot(x,'k'), grid on
subplot(2,2,2), plot(t,x,'k')
title('Wykres kosinusoidy')
xlabel('czas')
subplot(2,2,3), plot(t,x,'k+:'), grid on
subplot(2,2,4), stem(t,x,'k'), grid on
sporządzi poniższe wykresy.
Wykres kosinusoidy
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
0
5
10
15
-1
0
5
10
czas
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
0
5
10
-1
0
5
10
Wykresy funkcji w przestrzeni 3-wymiarowej kreślimy w postaci linii lub
powierzchni. Przykładowo wykres zespolonego, analitycznego sygnału AM
(
1
+
0
75
*
cos(
0
*
t
)
)
*
e
( )
.
t
•
będzie linią w przestrzeni 3-wymiarowej. Z kolei wykres modułu transmitancji
H(s)=(s+3)/(s+1) (s jest argumentem zespolonym), będzie powierzchnią w przestrzeni
3-wymiarowej. Powierzchnie mogą być kolorowane i cieniowane (podobnie jak w logo
MATLABa, gdzie dodatkowo zastosowano podświetlenie). Stosowne wykresy otrzymamy
posługując się skryptem wykres3D.m o następującej treści:
j
0
Andrzej Leśnicki Laboratorium CPS Ćwiczenie 0 5/17
%Wykres sygnału zespolonego AM
figure(1)
t=0:0.1:200;
re=(1+0.75*cos(0.1*t)).*cos(0.5*t);
im=(1+0.75*cos(0.1*t)).*sin(0.5*t);
subplot(2,2,1)
plot3(im,re,t)
grid on
title('Zespolony sygnal AM')
xlabel('im')
ylabel('re')
zlabel('t')
%Wykres modułu transmitancji H(s)=(s+3)/(s+1)
[X,Y]=meshgrid(-6:0.1:2,-2:0.1:2);
Z=sqrt(((X+3).^2+Y.^2)./((X+1).^2+Y.^2+eps));
%Obcięcie wartości powyżej a=5
a=5;
ZN=Z.*(Z<=a)+a*(Z>a);
subplot(2,2,2)
mesh(X,Y,ZN)
axis([-6 2 -2 2 0 a])
title('|H(s)=(s+3)/(s+1)| - mesh')
subplot(2,2,3)
surf(X,Y,ZN)
axis([-6 2 -2 2 0 a])
title('|H(s)=(s+3)/(s+1)| - surf')
subplot(2,2,4)
h=surf(X,Y,ZN);
shading flat
axis([-6 2 -2 2 0 a])
title('|H(s)=(s+3)/(s+1)| - surf+shading')
Plik z chomika:
protur
Inne pliki z tego folderu:
Maciej Krawiecki - Matlab Dla Odpornych.pdf
(281 KB)
Przypomnienie Matlaba.pdf
(554 KB)
Roman Salomon - 'Matlab' - podstawy i zastosowania.pdf
(1800 KB)
Lab Matlab.pdf
(1218 KB)
Zastosowanie obliczeń w Matlabie.doc
(892 KB)
Inne foldery tego chomika:
program
zestawy ćwiczeń
Zgłoś jeśli
naruszono regulamin