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