10 matlab

background image

Matlab – środowisko obliczeń numerycznych

• Nazwa Matlab pochodzi od matrix laboratory.

• Jest to język wysokiego poziomu, w którym polecenia są sekwencyjnie interpretowane.

• Kolejne instrukcje wpisywane są w wierszu poleceń specjalnego edytora (command window).

Wykonanie prostych instrukcji następuje po wpisaniu w edytorze nazwy instrukcji i naciśnięciu
klawisza Enter. Wykonanie pętli bądź instrukcji warunkowych (for, while, if, switch)

następuje po zamknięciu bloku instrukcji słowem end i wciśnięciu klawisza Enter.

• Ciągi instrukcji można umieszczać w funkcjach lub skryptach, będących plikami o nazwach

[nazwa].m, po czym wykonywać zawarte w nich instrukcje wpisując w edytorze poleceń
[nazwa] i wciskając Enter.

• Podstawowym typem danych jest macierz, tzn. domyślnym argumentem wejściowym funkcji

(poleceń) jest macierz o nieustalonych z góry rozmiarach i wymiarze.

• Zmienne są inicjalizowane przez przypisanie im wartości (ogólnie macierzy liczbowej), zaś

usuwane są z pamięci poleceniem clear [nazwa_zmiennej].

• Rozmiary zmiennych są dynamicznie skalowane w trakcie wykonywania programu.

Przypisanie wartości elementowi macierzy o indeksie, którego dana zmienna nie obejmowała,
powoduje zwiększenie rozmiaru macierzy.

• Nie operuje się na adresach zmiennych, zaś argumenty są przekazywane do funkcji poprzez

wartość (por. z C, gdzie tablice przekazywane były poprzez referencję). Aby uniknąć
kopiowania zmiennych przy przekazywaniu ich do funkcji, można użyć zmiennych globalnych.

background image

Matlab – deklarowanie zmiennych i przypisywanie wartości

• zadeklarujmy zmienną skalarną (macierz 1x1), np:

» X=1

X =

1

»

umieszczenie średnika na
końcu instrukcji powoduje, iż
wartość zmiennej nie zostaje
wyświetlona

» X=1;

»

znak

zachęty

kolejny

znak

zachęty

• możemy rozszerzyć zadeklarowaną powyżej zmienną X np. do macierzy 3x3 instrukcją:

» X(3,3)=2

X =

1 0 0

0 0 0

0 0 2

możemy jeszcze zwiększyć liczbę wymiarów, tworząc macierz 3x3x2 następująco:

» X(3,1,2)=5
X(:,:,1) =

1 0 0
0 0 0
0 0 2

X(:,:,2) =

0 0 0
0 0 0
5 0 0

operator : symbolizuje
wszystkie indeksy
danego wymiaru

zbadajmy rozmiar macierzy X:

» size(X)

ans =

3 3 2

background image

Matlab – właściwości nazw zmiennych

• rozpoznawane są małe i wielkie litery

• nazwy mogą się składać maksymalnie z 31 znaków, znaki powyżej tej granicy są

ignorowane

• nazwy muszą się zaczynać od liter, kolejne znaki mogą być literami, cyframi lub

podkreśleniami: „ _ ”

• nazwy nie mogą być tożsame ze słowami kluczowymi języka. Zastrzeżonymi

sekwencjami znaków są:

• nazwy nie powinny pokrywać się z nazwami funkcji, jakich użytkownik będzie miał zamiar

używać po zadeklarowaniu zmiennej. Np. deklaracja clear=4; zablokuje dostęp do

funkcji clear usuwającej wszystkie zmienne z pamięci. Wywołanie „ clear” jedynie
spowoduje wyświetlenie:

zaś wywołanie „clear;” w ogóle niczym się nie objawi

• nazwy zmiennych nie powinny pokrywać się z nazwami zmiennych specjalnych

break case catch continue else elseif end for function
global if otherwise persistent return switch try while

clear =

4

background image

Matlab – wybrane zmienne specjalne

liczba argumentów wejściowych funkcji, lista argumentów wejściowych funkcji

nargin,

varargin

liczba argumentów wyjściowych funkcji, lista argumentów wyjściowych funkcji

nargout,

varargout

największa dodatnia całkowita liczba w formacie zmiennoprzecinkowym, najczęściej

2

53

-1, dla liczb większych od bitmax nie ma gwarancji, iż po dodaniu 1 zmienią swoją

wartość, np.

» bitmax + 5 == bitmax + 6
ans =

1

bitmax

największa dodatnia liczba zmiennoprzecinkowa

realmax

najmniejsza dodatnia liczba zmiennoprzecinkowa

realmin

jednostka urojona, np. » sqrt(-1)

ans =

0 + 1.0000i

i lub j

symbol nieoznaczony, np. 0/0, 0*inf, inf/inf, 0*NaN

NaN lub nan

nieskończoność, np. 1/0, 1.1*realmax, 2*inf

Inf lub inf

określa precyzję pewnych obliczeń, np. rzędu macierzy

eps

stosunek obwodu koła do jego średnicy

pi

przechowuje wynik ostatnio obliczonego wyrażenia, jeżeli wynik ten nie był

przypisany do żadnej innej zmiennej, np.

» 2+2
ans =

4

ans

funkcja clear przywraca domyślne wartości zmiennych

przedstawionych w wierszach od 1 do 9 tabeli

background image

Matlab – działania na macierzach (1)

• ręczne wprowadzanie elementów macierzy:

• elementy można także odczytać z pliku dyskowego, Matlab domyślnie tworzy nową

zmienną o nazwie identycznej z nazwą pliku bez rozszerzenia.

• macierz może zostać zapisana jako wartość wyjściowa funkcji, np:

• sposoby odwoływania się do elementów macierzy (indeksowania):

» A=[1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

średniki oddzielają

wiersze

odstępy (lub przecinki)

oddzielają kolumny

» load proba.txt

» who

Your variables are:

proba

w pliku tekstowym umieszcza się liczby

oddzielone spacjami (lub przecinkami)

oraz znakami nowej linii

» A=rand(2,3)

A =

0.4565 0.8214 0.6154

0.0185 0.4447 0.7919

(2,3)

6

(2,2)

4

(2,1)

2

(1,3)

5

(1,2)

3

(1,1)

1

» A(6)
ans =

0.7919

» A(2,3)
ans =

0.7919

poprzez podanie

numeru wiersza i

kolumny:

poprzez

indeksowanie

liniowe:

Próba odwołania się do nieistniejącego elementu, np

» A(3,3)

zakończy się wyświetleniem

komunikatu o błędzie:

???

Index exceeds matrix dimensions.

background image

Matlab – działania na macierzach (2)

działania wykonywane element po elemencie:

operandy muszą być tych samych rozmiarów

• działania oparte na algebrze macierzy:

+

-

.*

./

.\

.^

*

/

\

^

prawostronne

dzielenie macierzy

A/B = A*(B^-1)

lewostronne

dzielenie macierzy

A\B = (A^-1)*B

transpozycja

macierzy

background image

Należy zwrócić uwagę, aby nie pomylić funkcji pobierających jako argumenty wejściowe macierze,
ale liczących element po elemencie, z funkcjami macierzy wykorzystującymi algebrę macierzy.

Rozważmy następujący przykład. Funkcja

polyval(

p

,

x

)

zwraca wartość wielomianu o

współczynnikach zawartych w wektorze

p

w punkcie

x

w następujący sposób:

polyval(p,x)= p

1

x

n-1

+ p

2

x

n-2

+ ... + p

n-1

x

1

+ p

n

x

0

gdzie

n

to rozmiar wektora

p

, zaś stopień zdefiniowanego przez ten wektor wielomianu to

n-1

.

Pierwszy element wektora

p

jest współczynnikiem przy najwyższej potędze. Prosty przykład

zastosowania to np.

Jeżeli jako drugi argument funkcji

polyval

podamy macierz, obliczenia zostaną wykonane element

po elemencie, np:

» A=[0 0 1; 0 1 0; 0 0 1]

A =

0 0 1

0 1 0

0 0 1

» polyval([1 2 3],A)

ans =

3 3 6

3 6 3

3 3 6

» polyval([1 2 3],2)

ans =

11

ponieważ
1·2

2

+ 2·2

1

+ 3·2

0

= 4 + 4 + 3 = 11

Inaczej zachowuje się funkcja

polyvalm

, która obliczy wartość

wielomianu podnosząc macierze do odpowiednich potęg:

polyvalm(p,X)= p

1

X

n-1

+ p

2

X

n-2

+ ... + p

n-1

X

1

+ p

n

X

0

Analogicznie zachowują się funkcje exp i expm

» A=[0 0 1; 0 1 0; 0 0 1]

A =

0 0 1

0 1 0

0 0 1

» polyvalm([1 2 3],A)

ans =

3 0 3

0 6 0

0 0 6

Matlab – funkcje macierzy

background image

Matlab – operatory relacji

warunek uzyskania 1 w wyniku

operacja

A równe B

A == B

A mniejsze lub równe B

A <= B

A większe lub równe B

A >= B

A mniejsze od B

A < B

A większe od B

A > B

A różne od B

A ~= B

przykład:

» A=[1 2; 3 4]
A =

1 2
3 4

» B=[4 1; 3 2]
B =

4 1
3 2

» A>=B
ans =

0 1
1 1

Macierze A i B muszą być tych samych rozmiarów.

Operatory relacji porównują odpowiadające sobie
elementy macierzy i zapisują wynik do nowej macierzy,
wypełnionej wyłącznie wartościami 0 lub 1.

Operatory relacji porządkujących mają sens tylko dla
liczb rzeczywistych. W przypadku czterech ostatnich
operatorów Matlab porównuje części rzeczywiste liczb.

background image

Matlab – operatory i funkcje logiczne dwuargumentowe

opis

operacja

zwracana jest macierz, której element (i, j) jest równy
• 0 – jeżeli A(i, j) · B(i, j)

=0

• 1 – w przeciwnym wypadku

A & B

zwraca 1 jeżeli wszystkie elementy A są równe

odpowiadającym im elementom macierzy B
(tzn. sprawdza, czy A

=B)

isequal(A, B)

zwracana jest macierz, której element (i, j) jest równy
• 0 – jeżeli A(i, j)

=0 oraz B(i, j)=0 lub jeżeli A(i, j)−0

oraz B(i, j)

−0

• 1 – w przeciwnym wypadku

xor(A,B)

zwracana jest macierz, której element (i, j) jest równy
• 0 – jeżeli A(i, j)

=0 oraz B(i, j)=0

• 1 – w przeciwnym wypadku

A | B

A i B muszą

być tych

samych

rozmiarów

background image

Matlab – operatory i funkcje logiczne jednoargumentowe

zwracany jest wektor, którego n-ta współrzędna przyjmuje
wartość: 1 – jeżeli w n-tej kolumnie macierzy A wszystkie
wartości są niezerowe; 0 – w przeciwnym wypadku

all(A)

zwraca wartość 1, jeżeli macierz A jest pusta, np.

isempty(A)

zwracany jest wektor, którego n-ta współrzędna przyjmuje
wartość: 1 – jeżeli w n-tej kolumnie macierzy A wszystkie
wartości są niezerowe; 0 – w przeciwnym wypadku

all(A)

zwracany jest wektor, którego n-ta współrzędna przyjmuje
wartość: 1 – jeżeli w n-tej kolumnie macierzy A wystąpiła
choć jedna niezerowa wartość; 0 – w przeciwnym wypadku

any(A)

zwraca wektor kolumnowy zawierający liniowe indeksy
niezerowych elementów, np:

find(A)

zwracana jest macierz, której element (i, j) jest równy
• 0 – jeżeli A(i, j)

−0

• 1 – jeżeli A(i, j)

=0

~A

» A=[0 1 2; 0 i 1]

A =

0 1.0000 2.0000

0 0 + 1.0000i 1.0000

» find(A)'

ans =

3 4 5 6

» A=ones(0)

A =

[]

» isempty(A)

ans =

1

background image

Matlab – wizualizacja wektorów

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

0

5

10

15

20

0

1

2

3

4

5

6

7

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

krzywa w przestrzeni dwuwymiarowej
opisana parametrycznie:

» t=0:0.1:2*pi;
» x=cos(t);
» y=sin(t);
» plot(x,y)

» x=0:0.1:2*pi;
» y=sin(x);
» plot(x,y)

krzywa w przestrzeni trójwymiarowej
opisana parametrycznie:

wykres funkcji jako przykład krzywej w
przestrzeni dwuwymiarowej:

» t=0:0.1:6*pi;
» x=cos(t);
» y=sin(t);
» z=t;
» plot3(x,y,z)

background image

Matlab – wykreślanie powierzchni trójwymiarowych

-2

0

2

-2

0

2

0

2

4

6

x

y

z

-2

-1

0

1

2

-2

-1

0

1

2

0

1

2

3

4

5

-2

-1

0

1

2

-2

-1

0

1

2

0

1

2

3

4

5

Powierzchnie trójwymiarowe o dowolnym kształcie składane są z płaskich, sąsiadujących
ze sobą czworokątów. Współrzędne ich wierzchołków można zapisać do trzech odrębnych
macierzy (np. X, Y, Z) i wykreślić używając np. funkcji mesh(X,Y,Z) lub surf(X,Y,Z).

-1 1 1 -1 –1
-2 2 2 -2 –2

0 0 0 0 0

X

1 1 -1 -1 1
2 2 -2 -2 2
0 0 0 0 0

Y

0 0 0 0 0
5 5 5 5 5
2 2 2 2 2

Z

linia 1 linia 2

zamykamy

bryłę - ponownie

linia 1

zaznaczono przykładowy czworokąt,
zbiegający się do trójkąta


Wyszukiwarka

Podobne podstrony:
2. Matlab, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, metody numeryczne w technice, lab
Sprawko Matlab 10 (1)
Matlab co tam, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, metody numeryczne w technice,
matlab cw1, aaa, studia 22.10.2014, całe sttudia, III semestr, teoria obwodów cw
Zestaw 10, 4 semestr, matlab, testy
matlab 10
10 Metody otrzymywania zwierzat transgenicznychid 10950 ppt
10 dźwigniaid 10541 ppt
wyklad 10 MNE
Matlab cw1 2 zaoczni
Kosci, kregoslup 28[1][1][1] 10 06 dla studentow
10 budowa i rozwój OUN
10 Hist BNid 10866 ppt

więcej podobnych podstron