Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Wykład 2 Dr Aneta Polewko-Klim
Wykład 2 Dr Aneta Polewko-Klim
2
Darmowe odpowiedniki MATLABA: Octave i Scilab
3
Darmowe odpowiedniki MATLABA: Octave i Scilab
4
Konsola - przykład wykres
Skrypt 26. Skrypty Skrypt to plik tekstowy o rozszerzeniu .m zawierający instrukcje; Skrypty nie pobierają żadnych argumentów ani żadnych nie zwracają, operują tylko na zmiennych dostępnych w przestrzeni, są tam zapisywane wszystkie zmienne utworzone w skryptach; Skrypt można utworzyć za pomocą dowolnego edytora tekstowego lub bezpośrednio w pakiecie Matlab; Skrypt uruchamiamy podając jego nazwę w wierszu poleceń. Podczas wykonywania skryptu można wpisywać dane z klawiatury oraz wyświetlać wyniki w oknie poleceń. Skrypt można wywołać w innym skrypcie podając jego nazwę. Konsola - przykład wykres
5
19. Formaty i wyświetlanie liczb.
Obliczenia w Matlabie są wykonywane z podwójną precyzją, ale format wyświetlania liczb można zmienić za pomocą: format parametr_formatowania Parametr formatowania Reprezentacja short short e long long e hex + bank compact loose rat 1.3333e e-006 e e-006 3ff eb4b6231abfd271 Znak + jest wyświetlany dla liczb dodatnich Wyłącza dodawanie dodatkowych pustych wierszy Włącza dodawanie dodatkowych pustych wierszy 4/ /810045 dokładość numeryczna MALAB-a >>eps >> e-16
6
Konsola - przykład short vs long
short – reprezentacja stałoprzecinkowa pięciocyfrowa short e – reprezentacja zmiennoprzecinkowa pięciocyfrowa long – reprezentacja stałoprzecinkowa piętnastocyfrowa long e – reprezentacja zmiennoprzecinkowa piętnastocyfrowa hex – szesnastkowe wyświetlanie zawartości komórek zawierających daną liczbę + – znak + jest wyświetlany dla liczb dodatnich bank – format walutowy, pełna część całkowita, do dwóch miejsc po przecinku compact – wyłącza dodawanie dodatkowych pustych wierszy loose – włącza dodawanie dodatkowych pustych wierszy rat – przedstawia ułamki dziesiętne za pomocą ilorazu małych liczb całkowitych Konsola - przykład short vs long
7
20. Przydatne Funkcje Statystyczne
dostępne po wpisaniu >>help datafun
8
20. Wyświetlanie macierzy i ich rozmiarów.
Funkcja Opis disp(A) wyświetla zawartość macierzy A w oknie poleceń size(A) wyświetla rozmiar dwuwymiarowej macierzy A (liczbę wierszy i kolumn) w postaci dwuelementowego wektora wierszowego s = size(A) s = [n m] zmiennej s przypisuje zmiennej n liczbę wierszy, a zmiennej m liczbę kolumn n = size(A, 1) przypisuje zmiennej n liczbę wierszy m = size(A, 2) przypisuje zmiennej m liczbę kolumn length(x) zwraca długość wektora x lub dłuższy z wymiarów macierzy
9
Przykład Przykład: >> matrixK=[1 2 3; ; ; ] >> size(matrixK) >> Wyświetlanie zawartości macierzy A w oknie poleceń: >> disp(matrixK) Pytanie: Co wyświetli się na ekranie gdy wpiszemy: size(matrixK, 1)? size(matrixK, 2)? length(matrixK)?
10
21. Arytmetyka macierzowa i tablicowa.
Dodawanie i odejmowanie macierzowe i tablicowe jest identyczne, tj. odbywa się element po elemencie: A + B = [2, 0; -2 , 1] A – B = [0, –2; -2, 5] Mnożenie macierzowe oznaczamy *, natomiast mnożenie tablicowe .* Podczas mnożenia macierzowego należy pamiętać, aby liczba wierszy pierwszej macierzy była równa liczbie kolumn macierzy drugiej. W mnożeniu jak i w dzieleniu macierzowym nie jest spełnione prawo przemienności, A*B to nie to samo co B*A. A * B = [1 3; -2 –8] B * A = [-1 2; 4 –6] A .* B = B .* A = [1 –1; 0 – 6]
11
Dzielenie macierzowe nie jest przemienne, ponadto występuje tu dzielenie lewostronne i prawostronne.
Operator lewostronny – macierz stojąca po prawej stronie jest dzielona przez macierz stojącą po lewej stronie. Ogólnie służy on do rozwiązywania równań liniowych postaci: A * x = b wtedy: x = A\ b w tym wypadku wektor b jest dzielony przez macierz A. Operator prawostronny – macierz stojąca po lewej stronie operatora jest dzielona przez macierz stojącą po jego prawej stronie: A / B Dzielenie tablicowe: mamy także dwa operatory, a ponieważ przemienność w tym wypadku obowiązuje, gdyż operacje wykonujemy na poszczególnych elementach tablicy, mamy tylko dwa różne wyniki dzielenia: A .\ B = B ./ A A ./ B = B .\ A
12
Przykład >> matrixA = [2 -3; 3 -2]; >> vectorB = [-3 2];
Rozwiąż układ równań >> matrixA = [2 -3; ]; >> vectorB = [-3 2]; >> vectorResult = matrixA \ vectorB >> vectorResult >>
13
Potęgowanie: A.^3 = A.*A.*A A^(.3) 4^B Transpozycja macierzy jest to zamiana wierszy macierzy z kolumnami. Jeżeli mamy macierz o składnikach rzeczywistych to transpozycja macierzowa i tablicowa daje taki sam wynik, natomiast różni się gdy składnikami macierzy są liczby zespolone. W tym przypadku transpozycja tablicowa zamienia tylko wiersze z kolumnami, natomiast transpozycja macierzowa zwraca macierz o elementach sprzężonych.
14
Przykład
15
22. Funkcje matematyczne. Matlab udostępnia wiele standardowych funkcji matematycznych. Argumentem każdej z nich może być macierz to wówczas operacja wykonywana jest osobno na każdym jej elemencie Funkcja Opis sin(z), cos(z), tan(z), cot(z) funkcje trygonometryczne, argument w radianach sqrt(z) pierwiastek kwadratowy (jeśli z<0 wynik jest zespolony) exp(z) ez log(z), log2(z), log10(z) lnz, log2z, log10z (jeśli z<0 wynik jest zespolony) abs(z) z lub moduł liczby zespolonej angle(z), real(z), imag(z) argument liczby zespolonej, jej część rzeczywista i urojona conj(z) liczba zespolona sprzężona sign(x) funkcja signum max(x), min(x) zwraca odpowiednio największy i najmniejszy element wektora x sum(x), prod(x) zwraca odpowiednio sumę i iloczyn elementów wektora x mean(x) zwraca średnią arytmetyczną elementów wektora x ceil(z) zaokrąglenie liczby w górę floor(z) zaokrąglenie liczby w dół fix(z) zaokrąglenie liczby dodatniej w dół, ujemnej w górę round(z) zaokrąglenie liczby do najbliższej liczby całkowitej
16
23. Operatory porównania i logiczne
Nazwa Operator Funkcja Relacja równe a == b eq(a,b) a = b różne a ~= b ne(a,b) a b mniejsze a < b lt(a,b) większe a > b le(a,b) mniejsze równe a <= b gt(a,b) a b większe równe a >= b ge(a,b) a b Nazwa Operator Funkcja Relacja alternatywa a b or(a,b) a lub b koniunkcja a & b and(a,b) a i b negacja ~ a not(a) nie a
17
24. Instrukcje sterujące Instrukcja warunkowa if
wykonywana jeśli wyrażenie jest prawdziwe, w oknie poleceń tą instrukcję należy wprowadzać linijka po linijce. if warunek 1 instrukcje elseif warunek 2 elseif warunek 3 else end if warunek (wyrażenie_logiczne) instrukcje end
18
Przykład Program ok, a jednak coś nie tak? Ale co?
Oblicz wartość funkcji f(x) : >> if x > 3 >> f = x .* x - 6; >>elseif x >=- 1 & x <= 3 >> f = x; >>else >> f = x .* x - 2; >> end Program ok, a jednak coś nie tak? Ale co?
19
Instrukcja warunkowa switch
Wyrażenie może być liczbą lub łańcuchem znakowym. Wartość wyrażenia jest porównywana z wartościami kontrolnymi kolejnych przypadków case i wykonywane są instrukcje przy tej wartości case, która jest równa wyrażeniu. Jeżeli żadna z wartości kontrolnych nie odpowiada wyrażeniu wykonywane są instrukcje po opcjonalnym słowie otherwise. switch wyrażenie case wartość 1 wyrażenia instrukcje case wartość 2 wyrażenia ... otherwise end
20
Przykład numberR= round(10 * rand(1)); switch numberR case 1
resultSin = sin(numberR) case 2 resultCos = cos(numberR) otherwise resultTan = tan(numberR) end
21
Przykład w praktyce kliknij
22
Instrukcja for Podczas wykonywania instrukcji for kolumny macierzy_wartości przyporządkowywane są kolejno iterowanej zmiennej. W praktyce macierz_wartości ma postać min : max min : krok : max krok może być dodatni, ujemny, jak i ułamkowy. for zmienna = macierz_wartości instrukcje end
23
Przykład for i = 1: 5 for j = 1 : 4 A(i, j) = (i + j) / (i + j + 1)
Utwórz macierz A o rozmiarze 5 x 4, o wyrazach: for i = 1: 5 for j = 1 : 4 A(i, j) = (i + j) / (i + j + 1) end rowN = 5 columnN = 4 for n = 1: rowN for m = 1 : columnN A(n, m) = (n + m) / (n + m + 1) end
24
Instrukcja while i = 1; while wyrażenie_logiczne Instrukcje i = i + 1;
Instrukcje są powtarzane dopóki część rzeczywista wyrażenia ma wszystkie elementy różne od zera. Postać wyrażenia jest taka jak w instrukcji if czyli jest to wyrażenie logiczne. i = 1; while wyrażenie_logiczne Instrukcje i = i + 1; end
25
Przykład firstSec = 1; twoSec = 1; elementSec = 2;
Oblicz wartość setnego elementu ciągu Fibonacciego danego wzorem: firstSec = 1; twoSec = 1; elementSec = 2; elementSecAll = 100; while elementSec < elementSecAll thirdSec = firstSec + twoSec; firstSec = twoSec; twoSec = thirdSec; elementSec = elementSec + 1 end >> e+020 u1=1; u2=1; i=2; n=100; while i<n u3=u1+u2; u1=u2; u2=u3; i=i+1; u3 end >> e+020
26
Przykład w praktyce kliknij
27
W domu samodzielnie zaproponuj algorytm, który zrealizuje
kliknij W domu samodzielnie zaproponuj algorytm, który zrealizuje
28
Przykłady instrukcji sterujących
29
Instrukcja break i return
Polecenie break kończy wykonywanie pętli wcześniej niż wynikałoby to z warunków stopu dla pętli while lub przed skończeniem pętli for, wychodząc o jeden poziom zagłębienia na zewnątrz. Instrukcja return powoduje natomiast bezwarunkowe przerwanie skryptu lub funkcji i powrót do miejsca wywołania. while wyrażenie_logiczne i=i+1; if i>=imax break end instrukcje
30
25. Łańcuchy Łańcuchy znakowe są wektorami składającymi się ze znaków. Łańcuch taki definiuje się za pomocą apostrofów np. >> s = ’Matlab’ ; konwersji łańcucha na wektor kodów ASCII można dokonać poleceniem: >> a = double(s); konwersja odwrotna: >> char(a) Łańcuch jest wektorem, dlatego można na nim wykonywać operacje jak na zwykłych wektorach np. transpozycja łańcucha powodująca, że jego litery będą wypisywane jedna pod drugą. >>s’ Istnieje możliwość tworzenia macierzy, której wierszami są łańcuchy, w tym celu należy posłużyć się funkcją str2mat : >> S=str2mat('Matlab', 'procedury') S = Matlab procedury
31
Łańcuchy Łańcuchy znakowe są wektorami składającymi się ze znaków. Łańcuch taki definiuje się za pomocą apostrofów np. >>s=’Matlab’ ; konwersji łańcucha na wektor kodów ASCII można dokonać poleceniem: >>a=double(s); konwersja odwrotna: >>char(a) Łańcuch jest wektorem, dlatego można na nim wykonywać operacje jak na zwykłych wektorach np. transpozycja łańcucha powodująca, że jego litery będą wypisywane jedna pod drugą. >>s’ Istnieje możliwość tworzenia macierzy, której wierszami są łańcuchy, w tym celu należy posłużyć się funkcją str2mat : >> S=str2mat('Matlab','procedury') S = Matlab procedury
32
26. Funkcje wejścia i wyjścia
Funkcja Opis x = input(tekst) wyświetla łańcuch tekst, oczekuje na wpisanie przez użytkownika danej liczbowej i przypisuje ją zmiennej liczbowej x; zamiast danej liczbowej można wpisać wyrażenie Matlaba, które funkcja obliczy x = input(tekst, ’s’) wyświetla łańcuch tekst, oczekuje na wpisanie przez użytkownika łańcucha znakowego i przypisuje go zmiennej x pause zatrzymuje wykonywanie skryptu do chwili naciśnięcia przez użytkownika dowolnego klawisza pause(n) zatrzymuje wykonywanie skryptu na n sekund
33
Zadanie do wykonania: Oblicz pierwiastki dowolnego równania kwadratowego
34
Program ok, a jednak coś nie tak? Ale co?
a = input(` a = `); b = input(` b = `); c = input(`c = `); delta = b .* b – 4 * a .* c ; if delta > 0 x1 = (- b - sqrt(delta)) ./ (2 * a); x2 = (- b + sqrt(delta)) ./ (2 * a); Program ok, a jednak coś nie tak? Ale co? disp(['x1 = ', num2str(x1)]); disp(['x2 = ', num2str(x2)]); elseif delta == 0 x3 = - b ./ (4 * a); disp([‘ x1 = x2 = ', num2str(x3)]); else disp(‘ rownanie nie ma pierwiastków rzeczywistych '); end
35
27. Uproszczony odczyt i zapis danych
Funkcja Opis save zapisuje binarnie wszystkie zmienne w pliku o nazwie matlab.mat save plik zapisuje binarnie wszystkie zmienne w pliku o nazwie plik.mat save plik lista zapisuje binarnie w pliku o nazwie matlab.mat tylko zmienne wymienione jako lista load wczytuje zmienne zapisane w pliku matlab.mat load plik wczytuje zmienne zapisane w pliku plik.mat
36
Przykład Wczytaj 1 i 2 kolumnę z pliku o nazwie staredane.mat, następnie wymnóż dwie kolumny przez siebie i zapisz wynik jako 3 kolumnę do pliku o nazwie nowedane.mat, gdzie 1 i 2 kolumnę stanowią wcześniejsze dane wejściowe load staredane.mat -ascii x1= staredane(); x2= staredane(); x3= K=[]; save nowedane.mat K -ascii
37
28. Funkcje. Występują dwa rodzaje funkcji: a) funkcje wbudowane jak np. sqrt b) funkcje przechowywane w m-plikach (właśnie te m-pliki funkcyjne możemy tworzyć samodzielnie. Jak to zrobić? - pierwszy wiersz m-pliku musi zawierać definicję nowej funkcji: słowo kluczowe function - nazwę funkcji – musi być taka sama jak nazwa pliku (bez rozszerzenia) listę argumentów wyjściowych
38
Definicja funkcji function [outArg1, outArg2, …]=nameFunction(inArg1, inArg2, …] % ewentualny opis funkcji w formie komentarza instrukcje outArg1 = …… outArg2 = ……. function [radianAngle] = radst(degrees Angle) % program przelicza radiany na stopnie radianAngle = degreesAngle .*180 / pi; Ważne !!!: zmienne utworzone podczas działania funkcji są usuwane z chwilą zakończenia wykonywania funkcji, nie są widoczne poza nią, podobnie zmienne utworzone poza funkcją nie są widoczne w jej wnętrzu. Funkcja operuje na zmiennych lokalnych. Aby zmienna była widoczna globalnie, w ciele funkcji należy zadeklarować ją jako globalną i deklarację tą powtórzyć w ciele funkcji global nazwa zmiennej
39
Szczegóły 1. Jeśli funkcja ma tylko jeden argument wyjściowy, nawiasy możemy pominąć: function r = nameFunction(inArg1, inArg2, …) 2. Jeżeli nie zwraca argumentów wyjściowych, może być zapisana w postaci: function nameFunction(inArg1, inArg2, …..) 3. Nazwa funkcji musi rozpoczynać się literą, a pozostała część może być kombinacją liter, cyfr i znaku podkreślenia. Jeżeli nazwa pliku różni się od nazwy funkcji, to zwycięża nazwa pliku, dlatego powinno się stosować identyczne nazwy funkcji i pliku.
40
Dla zaawansowanych: pętle równoległe parfor, praca na kilku rdzeniach matlabpool
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.