Inżynierskie pakiety oprogramowania (CAD/CAM) dr M. Pluciński

-----------------------------------------------------------------------------------------------------------------

WYKŁAD 1 (22/02/2007)

LINPACK

EISPACK

SIMULINK

INTERPRETER

Zestaw

poleceń wbudowanych w interpreter można poszerzyć przez skrypty (*.H) –

jest to jedna z form rozwijania MatLaba.

Istnieją małe rozbieżności w skryptach przygotowywanych pod Windowsem i Linuxem, ale skrypty pisane w poprzednich wersjach programu niekoniecznie muszą działać w wersjach nowszych.

Można do programu dołączać biblioteki dynamiczne.

Interfejs

użytkownika może być zastąpiony w różny sposób (SIMULINK – nakładka, dzięki której w graficzny sposób można symulować systemy).

Różnice od języka C:

• w MatLabie wszystkie zmienne są dynamiczne, nie trzeba ich deklarować (ułatwia to pracę, ale jednocześnie powoduje spory bałagan); zmienne powstają przy pierwszym ich użyciu.

a = 5

→ tworzy

zmienną, przydziela jej obszar

pamieci i wpisuje jej wartość

• każde polecenie, które podajemy jest potwierdzane (jeśli nie chcemy, to stawiamy pod koniec instrukcji średnik (;)

a = 5 → po wciśnięciu ENTER wynik wypisany na ekranie: a =

5

a

=

5;

→ po wciśnięciu nie zobaczymy potwierdzenia

• 2 + 2 ENTER → działanie zostanie wykonane a wynik przechowany w zmiennej pomocniczej

• zmienne numeryczne – są pamiętanez największą maksymalną dokładnością

• zmienne specjalne: pi, i, j, inf, NaN (not a number) – ponieważ wszystkie zmienne są dynamiczne istnieje możliwość zapisu pi = 7

• interpretacja poleceń w MatLabie: program najpierw sprawdza czy wyrażenie jest wyrażeniem arytmetycznym, jeśli nie jest, to najpierw przeszukuje biblioteki, później katalogi (toolbooks)

Created by Maya

1

Inżynierskie pakiety oprogramowania (CAD/CAM) dr M. Pluciński

-----------------------------------------------------------------------------------------------------------------

Polecenia:

• clear all → czyści wszystkie zmienne

• clear a →czyści zmienną a

• clear = 5;

• chdir ‘i:/matlab’ → ustawia katalog roboczy Definiowanie macierzy w MatLabie:

1. bezpośrednie wypisanie elementów macierzy: A = [1 2 3 ; 4 5 6]

→ wyświetli:

1 2 3

4 5 6

A = [1 2 3

4 5 6];

Jeśli wprowadzone wyrażenie jest zbyt długie, to na końcu wiersza stawiamy ‘...’

A = [1 2 3 ...

4 5 6];

→ powstanie jeden wiersz

2. przez wektor z elementami równomiernie rozłożonymi pomiędzy minimum a maximum o zadanym kroku:

V = min : krok : max

krok

może być dodatni lub ujemny, może być wartością ułamkową V = 1 : 3 : 6

→ [1 4]

V = 10 : -1 : 1

→ [10 9 8 7 6 5 4 3 2 1]

jeśli krok jest równy 1 można go pominąć (V = min : max) 3. A = zeros (n)

→ macierz wypełniona zerami o rozmiarze n A = zeros (n,m)

→ j.w. ale macierz prostokątna

A = zeros ([n,m]) → jako argument przekazujemy wektor mówiący ile jest wierszy i kolumn

ones

→ tworzy macierz wypełnioną jedynkami

rand

→ wartości losowe od 0 do 1

eye

→ macierz jednostkowa po przekątnej

4. A = zeros (2);

B = eye (2);

C = 1: 4

D = [A , B ; C]

→ tworzymy macierz z macierzy

0 0

1 0

A

B

0 0

0 1

C

1 2 3 4

Created by Maya

2

Inżynierskie pakiety oprogramowania (CAD/CAM) dr M. Pluciński

-----------------------------------------------------------------------------------------------------------------

5. wymieszanie wszystkich technik:

E = 1 : 3 : 7 ; ones (2 , 3) [1 : 5]

1 2 3 7

1 1 1 1

1

1

1

5

Adresowanie:

• E (2,4)

→ gdzie 2 pokazuje numer wiersza, 4 numer kolumny

• H (3,5) =7

→ wpisanie wartości w dane miejsce

(jeśli macierz istniała i była dostatecznie duża, to MatLab wpisze wartość w podane miejsce; jeśli jej nie było, to ją utworzy, wpisze 7 we właściwe miejsce i resztę wypełni zerami; jeśli macierz istaniała i była za mała, to MatLab ją powiększy, przydzieli nowe miejsce w pamięci, przepisze macierz, zwolni poprzedni obszar –

powoduje to jednak olbrzymie przenoszenie danych)

• można się odwołać do grupy elementów

- A1 = A (1 : 2 , 1 : 2)

→ element 1 i 2 wiersza, 1 i 2 kolumny

to samo inaczej zapisane:

A1 = A ([1 2] , [1 2])

- A2 = A (2 , 1 : 6)

→ przypisze cały drugi wiersz

prościej:

A2 = A(2 , : )

→ ‘:’ oznacza: ‘weź wszystkie kolumy’

- A3 = A( : , 1 : 3 : 6)

→ wszystkie wiersze i kolumny 1 i 4

inaczej:

A3 = A( : , [1 4])

- A4 = A( : , [1 : 3 6])

- A5 = A( : , [1 3 6])

→ wszystkie wiersze, 1, 3 i 6 kolumna

• do macierzy można wpisywać inne macierze za pomocą działań:

- A = zeros (4);

B = [1 2 ; 3 4];

A (1 : 2 : 4 , [1 3]) = B

→ wpisz macierz B w I-szy i III-ci wiersz (rozmiar

musi

pasować)

Created by Maya

3

Inżynierskie pakiety oprogramowania (CAD/CAM) dr M. Pluciński

-----------------------------------------------------------------------------------------------------------------

0 0 0 0

1 0 2 0

0 0 0 0

0 0 0 0

3 0 4 0

0 0 0 0

0 0 0 0

0 0 0 0

- A( : , [1 4]) = ones (4,2); (też A ( : , [1 4]) ale tylko w nowych wersjach MatLaba) 1 0 2 1

1 0 0 1

1 0 4 1

1 0 0 1

OPERATORY MATEMATYCZNE

• + - można dodawać dwie macierze – muszą być takich samych rozmiarów (oprócz dod./odejm. macierzy od liczb);

• * mnożenie macierzy (liczba mnoży każdy element macierzy)

• / A/B

→ A * B -1 (B musi być odwracalne z wyznacznikiem zerowym)

• \ dzielenie

lewostronne

A\B

→ A-1 * B (A musi być odwracalne z wyznacznikiem zerowym) a\B → a * B (każdy element B podzielony przez liczbę a)

• ^ potęgowanie

A ^ n → A musi być macierzą kwadratową, n liczbą całkowitą, gdy n jest ujemne, to A dodatkowo musi być odwracalne

• `

transponowanie macierzy

OPERATORY TABLICOWE

Operatory tablicowe są bardzo wydajnym narzędziem.

.*

./ .\ .

Przykład:

a1 a2

b1 b2

a1b1 a2b2

.*

=

a3 a4

b3 b4

a3b3 a4b4

Created by Maya

4

Inżynierskie pakiety oprogramowania (CAD/CAM) dr M. Pluciński

-----------------------------------------------------------------------------------------------------------------

- dzielenie liczby przez macierz:

a ./ B

- potęgowanie:

A .^ r

(A dowolnego rozmiaru, każdy element A podniesiony do potęgi r) r .^ A

(macierz o rozmiarze A – r do potęgi elementu A) OPERACJIE NA LICZBACH ZESPOLONYCH

Z = 2 + 3 * i j ;

Z = 2 + 3 * j ;

Z = 2 + 3 * sqrt (-1) ;

Operacje na liczbach zespolonych są takie same jak na macierzach. Dodatkowo: real (z)

→ część rzeczywista

imag (z) → część urojona

abs (z)

→ moduł liczby zespolonej lub wartość bezwzględna angle (z) → argument liczby zespolonej sin (r)

→ sinus liczby rzeczywistej

sin (A)

→ sinus z każdego elementu macierzy

sin (z)

→ sinus z liczby zespolonej

exp (x)

→ e do potęgi x (najpierw należy utworzyć e -> e = exp(1) ) log (x)

log10 (x)

log2 (x)

ceil (x) → zaokrąglenie liczby w górę floor (x) → zaokrąglenie liczby w dół

fix (x)

→ odcina część ułamkową

round (x) → zaokrągla zgodnie z zasadami zaokrąglania Created by Maya

5