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