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 (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 będzie odpowiadać kwadrat, a 
indeksowi nieparzystemu – sześcian p-tej liczby naturalnej. 
 
 

Ćwiczenie 3 

 

Mając dany wektor x, utworzyć tablicę a o 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 ?