Matlab podstawy(1)

background image

PODSTAWY MATLABA:


Po uruchomieniu programu pojawiają się okna:
Command Window – służy do komunikacji programu z użytkownikiem. W tym oknie
wprowadzamy polecenia i w nim program wyświetla wyniki obliczeń.
Workspace – pokazuje zmienne aktualnie zadeklarowane w programie
Command History – zawiera ostatnio wprowadzane komendy
Current Directory – pokazuje zawartość bieżącego katalogu.

Obliczenia na liczbach prowadzimy wpisując konkretne działanie i naciskając ENTER.
Znak * oznacza mnożenia, znak / dzielenie, potęgowanie uzyskujemy wpisując przed
wykładnikiem potęgi znak ^. Separatorem dziesiętnym jest kropka, odpowiednikiem
mnożenia przez 10 do potęgi n jest dodanie na końcu wartości wyrażenia e. Jeśli chcemy
policzyć wartość dowolnej, znanej w programie funkcji, jej argumenty wprowadzamy
w nawiasie np:

sin(pi/2)
cos(5e-2)

1.

ZMIENNE W MATLABIE - MACIERZE

W Matlabie wszystkie używane zmienne są macierzami. Przez macierz rozumiemy

zbiór wartości numerycznych odpowiednio zorganizowanych w wierszach i kolumnach.
Liczba kolumn lub wierszy określana jest dowolną liczbą całkowitą, a jedynym
ograniczeniem jest rozmiar dostępnej pamięci.

Pierwszy rozmiar macierzy określa liczbę wierszy, a druga liczba służy do określenia liczby
kolumn. Przykładowo macierz o wymiarach 3 x 4 zawiera 3 wiersze i 4 kolumny, czyli
łącznie 12 elementów.

Skalar w Matlabie jest szczególnym przypadkiem macierzy o rozmiarze 1 x 1.

Wektor o n elementach jest definiowany jako macierz zawierająca 1 wiersz (n x 1) lub

macierz zawierająca 1 kolumnę (1 x n) – wektor kolumnowy.

Nazwa zmiennej w Matlabie może być ciągiem dowolnych cyfr i liter o długości nie

przekraczającej 19 znaków. Pierwszy znak nie może być cyfrą i nazwa nie może zawierać
spacji oraz niektórych znaków np. ‘ + – . Pamiętać należy, że w Matlabie rozróżniane są duże
i małe litery. Tak więc zmienne o nazwie c i C są dwiema różnymi zmiennymi ! Podobnie
MID i Mid to także dwie różne zmienne.

Poniżej przedstawiono kilka przykładów macierzy zdefiniowanych w Matlabie. Proszę

zwrócić uwagę na rolę nawiasów kwadratowych w definicji macierzy.

c = 5.66 or c = [5.66]

c

definicja skalara czyli macierzy 1x1


x = [ 3.5, 33.22, 24.5 ]

x

wektor wierszowy czyli macierz 1x3


x1 = [ 2;

x1 – wektor kolumnowy czyli macierz 4x1

5;

3;
-1]

background image


A = [ 1 2 4;

A – macierz o rozmiarze 4x3

2 -2 2;

4 wiersze i 3 kolumny

0 3 5;
5 4 9 ]



Dostęp do poszczególnych elementów macierzy jest możliwy poprzez wywołanie typu A(i,j),
przykładowo zmiana wartości jednego z elementów macierzy może nastąpić za pomocą
komendy A(4,1)=5
Macierz wyświetlana jest w Matlabie z zachowaniem struktury macierzy.
Macierze mogą być definiowane w różny sposób:

Przykład
Macierz x o rozmiarze 1x3, o elementach: x(1)=2, x(2)=4 i x(3)=-1.

x = [ 2 4 -1 ] lub

x = [ 2,4,-1 ]


Wykonanie polecenia następuje po naciśnięciu Enter. Kolejne elementy macierzy mogą być
oddzielone spacjami lub przecinkami. Macierz y o rozmiarach 2x4 o elementach: y(1,1)=0,
y(1,2) = y(1,3) = 2, y(1,4) = 3, y(2,1) = 5, y(2,2) = -3, y(2,3) = 6, y(2,4) = 4 może zostać
zdefiniowana w następujący sposób:

y =

[ 0, 2, 2, 3;

5, -3, 6, 4 ]

lub

y =

[ 0, 2, 2, 3 ; 5, -3, 6, 4 ]


Ś

rednik ";" jest używany do do rozdzielenia wierszy definiowanej macierzy jeśli definicja

wprowadzana jest w jednej linii. Wartości macierzy zdefiniowane mogą być również za
pomocą wyrażenia, np.:

a = [ sin(pi/2) sqrt(2) 3+4 6/3 exp(2) ]

tworzy macierz

a = [ 1.0000 1.4142 7.0000 2.0000 7.3891 ]


Nowa macierz może zostać również utworzona przy wykorzystaniu wcześniej
zdefiniowanych macierzy. Przykładowo korzystając z poprzednio zdefiniowanej macierzy x
utworzono macierz x1:
Polecenie:


x1 = [ x 5 8 ]


generuje macierz:

background image

x1 = [ 2 4 -1 5 8 ]


Wyrażenie

x(5) = 8

Powoduje dodanie nowego elementu macierzy x

x = [ 2 4 -1 0 8 ]

i dodatkowo automatycznie wstawiony zostaje element x(4) równy zero. Nowa macierz może
zostać utworzona również z innych macierzy. Polecenia:

c = [ 4 5 6 3 ]
z = [ y;c ]

dają w wyniku:

z = [ 0 2 2 3
5 -3 6 4
4 5 6 3 ]

Po każdej wykonanej komendzie (po naciśnięciu Enter) Matlab wyświetla rezultat
wykonywanej komendy. Efekt wyświetlania efektu działania komendy można zablokować
zakańczając linię polecenia średnikiem.

z = [ y ; c ] ;


Macierze mogą być również generowane za pomocą odpowiednich funkcji konstruujących,
przykładowo:
zeros

- tworzy macierz zerową

ones

- tworzy macierz jedynek

eye

- tworzy macierz z jedynkami na przekątnej

rand

- tworzy macierz z liczbami losowymi


Funkcje te wywołane z jednym parametrem tworzą macierz kwadratową o zadanym
wymiarze, z dwoma odpowiednią macierz prostokątną.

Kontynuacja linii polecenia


W niektórych przypadkach linia polecenia jest bardzo długa i nie mieści się w jednej linii
okna poleceń. Można w takim przypadku kontynuować linię polecenia w kolejnym wierszu
jeśli poprzednią linię zakończymy trzema kropkami "...".
Przykład
Polecenie:

4 + 5 + 3 ...
+ 1 + 10 + 2 ...
+ 5

background image

daje w wyniku

ans = 30

W tym przypadku należy jeszcze zwrócić uwagę na to że w wyniku tej operacji nie powstała
nowa zmienna, a wynik przypisany został do zmiennej standardowej ans. Kolejna operacja
tego typu spowoduje redefinicję zmiennej ans.

Operator ‘:’


Operator ':' pozwala na wykonanie wielu operacji w Matlabie. Jeśli dwie liczby całkowite
rozdzielone są dwukropkiem to w wyniku wykonania takiego polecenia powstanie wektor
wierszowy składający się z liczb całkowitych.
Polecenie

a = 1:8


generuje wektor


a = [ 1 2 3 4 5 6 7 8 ].


Jeśli trzy liczby (całkowite lub rzeczywiste) rozdzielone są dwukropkami to powstanie wektor
zawierający ciąg liczb narastających monotonicznie począwszy od pierwszej a skonczywszy
na wartości określonej trzecią liczbą. Przyrost wartości pomiędzy kolejnymi liczbami równy
jest drugiej liczbie wymienionej w komendzie:
Przykładowo


b = 0.0 : .2 : 1.0


generuje wektor:


b = [ 0.0 .2 .4 .6 .8 1.0 ]


Dwukropek może być wykorzystany również do operacji wydzielania wektora lub macierzy z
innej macierzy.
Przykładowo jeśli

x = [ 2, 6, 8;
0, 1, 7;
-2, 5, -6 ]

To komenda

y = x(:,1)

Spowoduje utworzenie wektora kolumnowego:

y = [2
0
-2 ]

background image


a komenda

yy = x(:,2)

tworzy:


yy = [ 6

1

5 ]


Polecenie

z = x(1,:)

generuje wektor wierszowy:

z = [ 2 6 8 ]

W wymienionych przypadkach ‘:’ oznaczał „wszystkie indeksy”. Inny przykład, definiujemy
macierz c

c = [ -1, 0, 0;
1, 1, 0;
1, -1, 0;
0, 0, 2 ]

a następnie wydajemy polecenie

d1 = c(:,2:3)

które tworzy macierz zawierającą kolumny od drugiej do trzeciej i wszystkie wiersze:

d1 = [ 0 0
1 0
-1 0
0 2 ]

Natomiast komenda

d2 = c(3:4,1:2)

tworzy macierz o wymiarach 2x2 powstałą z wiersza 3

ciego

i 4

tego

i kolumny 1

szej

i 2

giej

macierzy c.

d2 = [ 1 -1

0 0 ]

Do generowania wektorów służy również funkcja linspace(), w której jako agrumenty
podajemy wartość początkową, wartość kończową i liczbę wyrazów.

background image


E = linspace(0,2,21)

spowoduje wygenerowanie wektora o długości 21 elementów zmieniających się o wartość 0.1


2. OPERACJE ARYTMETYCZNE


Ponieważ podstawową strukturą w Matlabie jest macierz to również operatory arytmetyczne
są zdefiniowane dla zmiennych macierzowych, co pozwala na dużą oszczędność i elegancję
składni.

Podstawowe operacje algebraiczne to

+

dodawanie

-

odejmowanie

*

mnożenie

transpozycja ze sprzężeniem

\

dzielenie lewe (daje w rezultacie rozwiązanie równania a*x=b

/

dzielenie prawe ( a/b odpowiada (b’\a’)’ )

Użycie operatora w przypadku wielkości skalarnych powoduje, że wykonywane są operacje
algebraiczne w „tradycyjnym” ich rozumieniu.

Użycie operatora poprzedzonego kropką powoduje że operacje wykonane zostaną jak na
skalarach w odniesieniu do poszczególnych elementów zmiennych.

Przykładowo, zdefiniujmy macierze:


a = [1 2 3 ; 4 5 6 ; 7 8 10], b = [1 1 1]'

Macierz przemnożona (podzieloana) przez skalar daje w wyniku macierz o elementach
przemnożonych (podzielonych) przez skalar, przykładowo

2*a
a/4

Dodawanie skalara do macierzy powoduje, że do każdego elementu macierzy zostanie dodany
skalar.

b+2

Dodawanie macierzy działa tak jak normalana operacja dodawania macierzy


a + [b,b,b]

Mnożenie macierzy wymaga zgodności wymiarów i również odpowiada normalnej operacji
mnożenia macierzy


a*b, b*a

b'*a

background image

a*a', a'*a

b'*b, b*b'


Jak wspomniano wcześniej, poprzedzenie operatora kropką powoduje, że operacje będą
wykonywane na poszczególnych elementach


a.^2

podnosi do kwadratu każdy element macierzy a

1 ./ a

oblicza odwrotność każdego elementu


a operacja


[1 2 3 4] .* [2 2 1 1]


daje wynik

[2 4 3 4]


Jeśli przyjmiemy, że macierz a zawiera współczynniki układu równań liniowych, x jest
wektorem kolumnowym zawierjącym niewiadome a wektor b jest wektorem kolumnowym
zawierającym wyrazy wolne to równanie

a x =b

przedstawia układ równań liniowych który w Matlabie może zostać rozwiązany poleceniem


x = a \ b

co oznacza wykonanie operacji x = a

-1

b. Rozwiązanie problemu x a = b (a i b są dane), można

uzyskać wykonując:

x = b / a


co oznacza wykonanie operacji x = ba

-1

Oprócz operacji podstawowych w Matlabie dostępnych jest cały szereg funkcji operujących
na macierzach.

Polecenie Clear


W Matlabie dostępna jest funkcja która pozwala na usunięcie z pamięci zbędnych zmiennych.
jest to polecenie clear, które użyte bez żadnego argumentu powoduje USUNIĘCIE
WSZYSTKICH ZMIENNYCH z pamięci. Jeśli chcemy usunąć tylko wybrane zmienne to
należy podać nazwy tych zmiennych jako argument tej funkcji, przykładowo


clear z MED A


Oprócz tej komendy wspomnieć należy w tym miejscu o komendzie clc, która pozwala na
wyczyszczenie okna poleceń.

background image

Polecenia who, whos


Pozwalają na uzyskanie informacji o zmiennych znajdujących się w pamięci

Liczby zespolone


W Matlabie zmienne i oraz j automatycznie predefiniowane są jako sqrt(-1)

Zmiana precyzji wyświetlania wyników


Niezależnie od wybranej precyzji wyświetlania wyników wszystkie operacje w Matlabie
wykonywane są na zmiennych typu double. Zmianę precyzji wyświetlania można uzyskać
używając polecenia format:

a=sqrt(2)
format long, b=sqrt(2)
a-b
format short

Zapamiętywanie sesji i zmiennych na dysku


ś

eby zapisać wartości zmiennej "x" do pliku tekstowego o nazwie "var_x.txt" można użyć

polecenia

save var_x.txt x -ascii


ś

eby zapisać zmienną "x" do pliku w formacie Matlaba o nazwie "var_x.mat" można użyć

polecenia

save var_x x

ś

eby zapisać wszystkie zmienne do pliku w formacie Matlaba o nazwie "mysession.mat"

można użyć polecenia

save mysession

Wczytywanie sesji i zmiennych z pliku na dysku


Do wczytania zmiennej (lub sesji) z pliku w formacie Matlaba zastosuj polecenie load.


load mysession

Pomoc


Aby uzyskać pomoc na temat funkcji zastosuj polecenie help podając jako parametr nazwę
funkcji, przykładowo:

background image


help sin


Można też skorzystać z systemu pomocy w formacie HTML. Przeszukiwanie plików pomocy
w celu odnalezienia informacji związanych z określonym terminem czy też funkcją można
uruchomić stosując polecenie lookfor, przykładowo:


lookfor sin

3. WIZUALIZACJA ROZKŁADÓW JEDNOWYMIAROWYCH

Matlab oferuje różne rodzaje wykresów:

0

1

2

3

4

5

6

7

8

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0

1

2

3

4

5

6

7

-1

-0.5

0

0.5

1

0

1

2

3

4

5

6

7

-0.1

-0.05

0

0.05

0.1

0

1

2

3

4

5

6

7

8

9

10

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x=0:0.05:8;

y1=sin(x.^2);

y2=sin(x);

plot(x,y1, x,y2);

% Tworzenie wykresu z dwiema %
osiami y z u
życiem funkcji plot
t = 0:pi/20:2*pi;

y1 = sin(t);

y2 = 0.5*sin(t-1.5);

plotyy(t,y1,t,y2,'plot')

% Wykres schodkowy funkcji sin

x=0:0.25:10;

stairs(x,sin(x));

10

-1

10

0

10

1

10

2

10

0

10

10

10

20

10

30

10

40

10

50

-2.5

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

2.5

-1.5

-1

-0.5

0

0.5

1

1.5

0

0.5

1

1.5

2

2.5

3

3.5

4

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

% Wykres logarytmiczny

x = logspace(-1,2);

loglog(x,exp(x),'-s');

grid on

% Wykres błędu

x=-2:0.1:2;

y=erf(x);

e = rand(size(x))/10;

errorbar(x,y,e);

% Stem plot

x = 0:0.1:4;

y = sin(x.^2).*exp(-x);

stem(x,y)

0

1

2

3

4

5

6

7

8

9

10

10

0

10

2

10

4

10

6

10

8

10

10

0.125

0.25

0.375

0.5

30

210

60

240

90

270

120

300

150

330

180

0

11%

33%

6%

28%

22%

background image

% Wykres półlogarytmiczny(y-log)
x = 0:.1:10;
semilogy(x,10.^x)
% Wykres półlogarytmiczny(x-log)
x = 0:.1:10;
semilogx(10.^x,x)

% Wykres biegunowy

t=0:.01:2*pi;

polar(t,abs(sin(2*t).*cos(2*t)));

x = [1 3 0.5 2.5 2];

explode = [0 1 0 0 0];

pie(x,explode)

-3

-2

-1

0

1

2

3

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

1

2

3

4

5

0

5

10

15

20

25

0

5

10

15

20

25

1

2

3

4

5

% Wykres słupkowy funkcji
dzwonowej

x = -2.9:0.2:2.9;

bar(x,exp(-x.*x));

Y = round(rand(5,3)*10);
bar(Y,'stack')

Y = round(rand(5,3)*10);
barh(Y,'stack')








ĆWICZENIA

Ćwiczenie 1


Określić jakie macierze zostaną wygenerowane wyniku wykonania poniższych poleceń.
Sprawdzić swoje odpowiedzi wykonując polecenia w Matlabie. Do określenia rozmiaru
macierzy zastosować polecenie size np. size(z).

1. a = [1,0,0,0,0,1]
2. b = [2;4;6;10]
3. c = [5, 3, 5; 6, 2, -3]
4. 4. d= [3, 4;

5, 7;

9, 10 ]

5. e = [3, 5, 10, 0; 0, 0 ...

0, 3; 3, 9, 9, 8 ]

6. t = [4, 24, 9]

q = [t 0 t]

7. x = [ 3, 6 ]

y = [d;x]

z = [x;d]

8. r = [ c; x,5]
9. v = [ c(2,1); b ]

background image

10.

a(2,1) = -3


Ćwiczenie 2


Wygenerować macierz g 5x4.
g = [ 0.6, 1.5, 2.3, -0.5;
8.2, 0.5, -0.1, -2.0;
5.7, 8.2, 9.0, 1.5;
0.5, 0.5, 2.4, 0.5;
1.2, -2.3, -4.5, 0.5 ]

Określić jakie macierze zostaną wygenerowane wyniku wykonania poniższych poleceń:

1. a = g(:,2)
2. b = g(4,:)
3. c = [10:15]
4. d = [4:9;1:6]
5. e = [-5,5]
6. f= [1.0:-.2:0.0]
7. t1 = g(4:5,1:3)
8. t2 = g(1:2:5,:)


Ćwiczenie 3

1. Obliczyć wartości funkcji: y(x), z(x), g(x) w zakresie x=<-5;5> z krokiem 0.1.

)

3

sin(

)

100

cos(

10

1

)

(

10

)

40

cos(

)

(

)

4

sin(

)

(

2

)

1

(

x

x

x

g

e

x

x

z

x

x

y

x

+

=

=

=


Ćwiczenie 4


Utworzyć wektor, w którym każdemu indeksowi parzystemu p będzie odpowiadać kwadrat, a
indeksowi nieparzystemu – sześcian p-tej liczby naturalnej.

Ćwiczenie 3

Mając dany wektor x, utworzyć tablicę a o n wierszach będących kopiami x.
x = 1: 6; n = 5;

background image


PYTANIA:

1.

Jaką rolę pełni średnik na końcu wprowadzanego wyrażenia ?

2.

Co powodują i czym różnią się polecenia who i whos ?

3.

Kiedy stosujemy operator ”.” (kropka) ?

4.

Jaki jest rezultat opracji clear ?

5.

Do czego służy funkcja linspace() i jakie są jej parametry ?


Wyszukiwarka

Podobne podstrony:
Matlab, Podstawy Obsługi Pakietu Matlab
Matlab podstawy programowania
matlab podstawy
Matlab podstawy
Matlab podstawy
Matlab Podstawy
matlab podstawy
TOM MatLab podstawowe funkcje Suliga Pilarz Sowińska
Matlab Podstawy Obsługi Pakietu Matlab
Matlab (Opisy podstawowych funkcji) PL Wprowadzenie do pracy w środowisku pakietu Matlab
Podstawy dynamiki Matlab cw5
15 Podstawy automatyki Matlabid 16181 ppt
smalec,podstawy automatyzacji L,?dania symulacyjne elementów automatyki w środowisku Matlab Simulink
Symulacja układów sterowania z wykorzystaniem pakietu MATLAB, PWr W9 Energetyka stopień inż, III Sem
MATLAB ZADANIA, Materiały, Inżynieria Środowiska, Semestr 2, Informatyczne podstawy projektowania

więcej podobnych podstron