disp
Transkrypt
disp
Informatyka Transport Wykład 6 Matlab c.d. • Praca wsadowa (m- pliki) • Instrukcja warunkowa if • Tablice i ich zastosowania 1 M-pliki W Matlab-ie można zapisać tekst ciągu instrukcji w pliku tekstowym ASCII o rozszerzeniu m nazwa.m (tzw. m-pliki), a następnie wykonać plik - instrukcje wykonywane są kolejno jedna po drugiej. Matlab zawiera własny edytor plików ASCII. Okno edytora m-plików wykonanie m-pliku Uwagi praktyczne Efekty wykonania m-pliku widoczne Command Window Mogą być wykonywane tylko m-pliki z katalogu roboczego (Current Directory) – widoczne na liście w oknie – chociaż istnieje też możliwość dodania wielu katalogów do listy katalogów roboczych Polecenia w m-pliku piszemy dla czytelności w osobnych wierszach, choć można w jednym wierszu, oddzielając je przecinkiem (lub średnikiem) Jeśli średnik umieścimy na końcu polecenia to nie ma echa instrukcji na ekranie Command Window Po znaku % piszemy komentarze – ignorowane przez Matlaba Uwaga na błędy instrukcji! Interakcja z użytkownikiem (instrukcja wejścia) zmienna = input('tekst zachęty'); Działanie: skrypt się zatrzymuje i czeka na podanie wartości dla zmiennej a = input('Podaj a:'); b = input('Podaj b:'); c = input('Podaj c:'); Przykładowy tekst w m-pliku: clc clear a=input('Podaj a:'), b=input('Podaj b:'),c=input('Podaj c:'), delta= b*b-4*a*c; disp('Współczynniki równania kwadratowego:') disp(a),disp(b),disp(c) disp('Wartość delta wynosi:'),disp(delta) Efekt wykonania m-pliku w Command Window Współczynniki równania kwadratowego: 4.000000 -3.400000 2.450000 Wartość delta wynosi: -27.640000 Instrukcja warunkowa Instrukcja służy do sprawdzenia warunków i alternatywnego wykonywania różnych grup instrukcji gdy dany warunek będzie prawdziwy (true) Postać ogólna if warunek1 instrukcje (wykonywane gdy jest spełniony warunek1) elseif warunek2 instrukcje (wykonywane gdy jest spełniony warunek2) elseif warunek3 instrukcje (wykonywane gdy jest spełniony warunek3) …itd else instrukcje (wykonywane gdy niespełnione oba warunki) end Uwaga1: Bloki else i elseif mogą zostać pominięte. Uwaga2: Gdy kolejny warunek jest prawdziwy, pozostałe warunki nie są już sprawdzane Warunek to połączenie dwóch wyrażeń arytmetycznych znakami: > < >= <= == (równe) ~= (nierówne) Dwa warunki można związać: koniunkcja warunków: dwuznak && alternatywa warunków: dwuznak || Przykłady warunków: a == 0 b<c 2*a >= 5 x ~= 5 (równe UWAGA: dwa znaki =) (różne od) Przykład 1 a = 1; b = 6; c = 3; delta = b^2-4*a*c; if delta<0 disp ('delta jest ujemne') % wyświetlenie tekstu elseif delta==0 disp('delta równe 0') % wyświetlenie tekstu else disp(delta) % wyświetlenie wartości delta end; Przykład 2 Test zawierania się liczby w przedziale: a = input('Podaj liczbę:'); if (a>6) && (a<10) disp('a w przedziale (6, 10)') else disp('a poza przedziałem (6, 10)') end TABLICE Tworzenie tablicy wektor wierszowy M1=[1 2 3 4 5] lub M1=[1, 2, 3, 4, 5] wektor kolumnowy M2=[1; 2; 3; 4; 5] tablica dwuwymiarowa M3 = [1 2 3; 2 1 1; 1 0 0] 11 Metoda generowania tablicy o elementach ciągu arytmetycznego x=0:2:10 %generowanie wektora od 0 do 10 co 2 % wart_pocz:krok:wart_koncowa 0 2 4 6 8 x= 0:0.1:2 10 %dozwolona wartość dziesiętna kroku Można pominąć krok: x=0:10 %generowanie wektora od 0 do 10 co 1 % wart_pocz:wart_koncowa 0 1 2 3 4 5 6 7 8 9 10 12 Podobnie w tablicach wielowymiarowych M = [0:5 ; 10:15] %wartość początkowa: wartość końcowa (krok=1) 0 1 2 3 4 5 10 11 12 13 14 15 ale UWAGA! M = [0:5; 10:17] błąd arguments dimensions are not consistent NIE ZGADZAJĄ SIĘ WYMIARY! 13 Można wygenerować tablicę z wartościami funkcji: x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa M=[x; sind(x)] 0 0 0.1000 0.0017 0.2000 0.0035 0.3000 0.0052 0.4000 0.0070 0.5000 0.0087 0.6000 0.0105 0.7000 0.0122 0.8000 0.0140 0.9000 0.0157 1.0000 0.0175 x= [1 :10] M=[x; log(x)] 1.0000 0 2.0000 0.6931 3.0000 1.0986 4.0000 1.3863 5.0000 1.6094 6.0000 1.7918 7.0000 1.9459 8.0000 2.0794 9.0000 2.1972 10.0000 2.3026 14 Dostęp do elementu tablicy M1=[ 1 3 5 -11 7] disp(M1(3)) wyświetlony zostanie trzeci element tablicy tablica dwuwymiarowa M2 = [1 2 3; 2 1 1.5; 1 0 0] disp(M2(2,3)) Można elementy zdefiniowanej tablicy wykorzystać w wyrażeniach, np: y= M(2,2)^2 15