Tutorial_MATLAB_02.pdf

(177 KB) Pobierz
Microsoft Word - Tutorial_MATLAB_02.doc
Materiały do Laboratorium Informatyki
Rok akademicki: 2008/09
Semestr: letni
MATLAB – cz. 2
Podstawowe funkcje umożliwiające wprowadzanie danych przez użytkownika i
wypisywanie danych na ekran.
disp('Podaj wymiary macierzy') wyświetla komentarz na ekranie
disp(A) wyświetla zmienną A na ekranie
n=input('Podaj ilość wierszy macierzy A: ') ; czyta macierz z klawiatury
macierz należy wprowadzać łącznie z nawiasami kwadratowymi,
np. „ [ 1 2 ; 3 4] <Enter>”.
W celu wypisania wartości na ekran nie zawsze jest jednak konieczne użycie instrukcji disp .
Można posłużyć się samą nazwą zmiennej, tj. wpisując po znaku zachęty nazwę zmiennej i
naciskając Enter:
>> A <Enter>
Na ekranie wyświetlana jest nazwa zmiennej oraz jej wartość (o ile zmienna taka istnieje):
A =
1
Jeżeli zmienna nie istnieje, wówczas wypisywany jest stosowny komunikat:
? ?? Undefined function or variable 'B'.
Wypisanie wartości zmiennej na ekran możliwe jest również od razu po obliczeniu jej
wartości. W tym celu nie należy kończyć wiersza średnikiem. Przykład:
>> A=exp(1)
A =
2.7183
Pętle
MATLAB w większości operacji macierzowych nie wymaga zastosowania pętli. Nie zaleca
się więc używania pętli w sytuacjach, gdy możliwe jest wykonanie danej operacji przy użyciu
instrukcji i operatorów operujących na wektorach bądź macierzach (patrz poprzednie
ćwiczenie). W wielu sytuacjach jednak konieczne okazuje się albo zaprogramowanie np.
złożonych obliczeń iteracyjnych, bądź innych obliczeń nie dających się zapisać wyłącznie za
pomocą takich operatorów bądź funkcji. W takich przypadkach konieczne jest posłużenie się
pętlami. MATLAB oferuje następujące, doskonale znane z poprzedniego semestru
Informatyki, pętle:
For
While
Opracowali: dr inż. Witold Nocoń, dr inż. Krzysztof Stebel
Materiały do Laboratorium Informatyki
Rok akademicki: 2008/09
Semestr: letni
Najprostsze użycie pętli for przedstawia się następująco:
for i=1:n,
instrukcje
end
Instrukcje zawarte pomiędzy przecinkiem a słowem end wykonywane będą dla wartości
zmiennej i od 1 do n . Przykład:
for i=1:3,
disp(i)
end
Wykonanie powyższego skryptu spowoduje wykonanie instrukcji wypisania wartości na
ekran. Jako że zmienna „i” przyjmuje kolejne wartości całkowite od 1 do 3 (a więc 1 2 3), to
efekt wykonania takiego skryptu będzie następujący (funkcja disp nie wypisuje nazwy
zmiennej):
1
2
3
>>
Jeżeli indeks pętli ma się zmieniać o wartość inną niż 1, wówczas należy pętlę zapisać w
następujący sposób
for i=1:krok:n,
instrukcje
end
Przykład:
for i=1:0.5:3,
disp(i);
end
Wynik:
1
1.5000
2
2.5000
3
>>
Opracowali: dr inż. Witold Nocoń, dr inż. Krzysztof Stebel
Materiały do Laboratorium Informatyki
Rok akademicki: 2008/09
Semestr: letni
Pętle mogą być oczywiście zagnieżdżone, tzn. w ramach instrukcji pętli zewnętrznej, mogą
się znaleźć kolejne pętle. Przykład:
for i=1:2
for j=1:2
i+j
end
end
W takim przypadku wynik działania jest następujący:
ans =
2
ans =
3
ans =
3
ans =
4
Pętla while posiana następującą ogólną postać:
while warunek
instrukcje
end
Warunek zapisywany jest przy użyciu wybranego operatora porównania:
Operatory porównania:
== < > <= >= ~=
Przykład:
i=0;
while i<5
i % wypisanie wartości i na ekran
i=i+1; % zwiększenie wartości i o jeden
end
co spowoduje wypisanie na ekran liczb od 0 do 4.
Opracowali: dr inż. Witold Nocoń, dr inż. Krzysztof Stebel
Materiały do Laboratorium Informatyki
Rok akademicki: 2008/09
Semestr: letni
Instrukcje warunkowe
Postać ogólna instrukcji if:
IF warunek
instrukcje
ELSEIF warunek
instrukcje
ELSE
instrukcje
END
Przykłady:
Używanie składowych ELSEIF oraz ELSE jest opcjonalne. W najprostszym przypadku
instrukcja warunkowa może zostać użyta w następujący sposób:
a=input( 'Podaj wartosc a = ' );
b=input( 'Podaj wartosc b = ' );
if a>b
disp( 'A jest wieksze od B!' );
end
Jeżeli użytkownik wprowadzi wartość a większą od wartości b, wtedy na ekranie wypisany
zostanie stosowny komunikat. W przeciwnym wypadku żaden komunikat nie zostanie
wypisany.
Jeżeli chcemy zaprogramować wykonanie się dwóch różnych instrukcji w zależności od
spełniania lub niespełnienia warunku, wtedy do instrukcji warunkowej należy dodać składową
ELSE:
if a>b
disp( 'A jest wieksze od B!' );
else
disp( 'A jest mniejsze lub równe B!' );
end
Na ekranie zawsze pojawi się tylko jeden z przykładowych komunikatów (w zależności od
spełnienia lub niespełnienia warunku).
Użycie składowej ELSEIF może wyglądać następująco:
if a>b
disp( 'A jest wieksze od B!' );
elseif a==b
disp( 'A posiada taką samą wartość jak B' );
else
disp( 'A jest mniejsze od B!' );
end
Opracowali: dr inż. Witold Nocoń, dr inż. Krzysztof Stebel
Materiały do Laboratorium Informatyki
Rok akademicki: 2008/09
Semestr: letni
W tym przypadku rozróżniane są już trzy przypadki. Jeżeli a>b wtedy wypisywany jest
pierwszy komunikat i program kończy wykonywanie instrukcji warunkowej – program
przechodzi do słówka „end”. Jeżeli warunek nie jest spełniony (czyli a nie jest większe od b),
wtedy program przechodzi do „elseif” i sprawdza kolejny warunek. Jeżeli „a jest równe b”
wtedy wypisywany jest drugi komunikat. Jeżeli tak nie jest (czyli a nie jest równe b), wtedy
program przechodzi do słówka „else” i wypisuje komunikat ostatni.
Uwaga: należy zwrócić uwagę na użycie operatora sprawdzenia równości „==”. Użycie w
tym miejscu operatora przypisania „=” będzie błędem, gdyż wartości a i b nie zostaną
porównane. Zamiast tego, zmiennej „a” przypisana zostanie wartość zmiennej „b”, a nie o to
tutaj chodzi.
Instrukcje warunkowe i pętle mogę być bez ograniczeń zagnieżdżane, tzn. przykładowo,
pomiędzy słówkiem „else” a słówkiem „end” można wstawić kolejną instrukcję warunkową
i/lub pętle. Należy jedynie zwrócić uwagę na prawidłowe zagnieżdżanie.
Podpowiedź: w celu prawidłowego napisania i/lub zagnieżdżania pętli i instrukcji
warunkowych, należy w pierwszej kolejności napisać sobie strukturę instrukcji, np.:
if a>b
else
end
a dopiero potem wypełnić ją konkretnymi instrukcjami, czyli np.:
if a>b
disp( 'A jest wieksze od B!' );
else
disp( 'A nie jest mniejsze od B!' );
end
Oczywiście ma to tylko znaczenie podczas pisania, ale pozwala nie zapominać o
wymaganych składowych instrukcji (np. o koniecznym słówku „end” na końcu tej instrukcji).
Ważne jest też, żeby instrukcje wewnątrz instrukcji warunkowych oraz pętli były wpisywane
z wcięciem, tak jak w przytoczonym przykładzie. Tak napisany kod staje się o wiele bardziej
czytelny – szczególnie dla prowadzącego który sprawdza zadania podczas kolokwium .
Studenci proszeni są o samodzielne sprawdzenie jak działa instrukcja wielokrotnego wyboru
SWITCH.
Opracowali: dr inż. Witold Nocoń, dr inż. Krzysztof Stebel
Zgłoś jeśli naruszono regulamin