04 programowanieid 5161 ppt

background image

1

Programowanie w MATLAB-

ie

dr inż. Henryk Olszewski

background image

2

Wyrażenia warunkowe

Wyrażenia warunkowe służą do porównywania zmiennych
o tych samych rozmiarach. Jeśli wyrażenie warunkowe jest
spełnione, porównanie zwraca wówczas wartość 1 (wartość
logiczna „prawda”
). W przeciwnym wypadku zwracana jest
wartość 0 (wartość logiczna „fałsz”).

Operator porównania

Relacja

a == b

a = b

a ~= b

a

b

a < b

a < b

a > b

a > b

a <= b

a

b

a >= b

a

b

background image

3

Wyrażenia warunkowe

Operator logiczny

Opis

Relacja

a | b

alternatywa

a lub b

a & b

koniunkcja

a i b

~a

negacja

nie a

Funkcje logiczne ułatwiające operacje porównywania macierzy:

sprawdzenie, czy wszystkie elementy wektora A są różne
od 0 i zwrócenie wartości 1 („prawda”) lub 0 („fałsz”); jeśli A
jest macierzą, każda kolumna jest traktowana jako wektor -
zwracany jest wektor wierszowy zer i jedynek:

»

all(A)

sprawdzenie, czy którykolwiek z elementów wektora A jest
różny od 0 i zwrócenie wartości 1 („prawda”) lub 0 („fałsz”);
jeśli A jest macierzą, każda kolumna jest traktowana jako
wektor - zwracany jest wektor wierszowy zer i jedynek:

»

any(A)

background image

4

Wyrażenia warunkowe

zwraca wartość 1, jeśli argumenty funkcji są macierzami
o jednakowym rozmiarze i zawartości - w przeciwnym
wypadku zwraca wartość 0:

»

isequal(A,B,...)

zwraca wartość 1, jeśli macierz A jest macierzą pustą - w
przeciwnym wypadku zwraca wartość 0:

»

isempty(A)

Program MATLAB posiada bogaty zestaw funkcji
logicznych, określanych ogólnie jako is*, np. ischar,
isreal, isnan i wiele innych.

background image

5

Instrukcje strukturalne

W programie MATLAB istnieje 5 instrukcji strukturalnych:

instrukcja warunkowa if,

instrukcja wyboru switch,

instrukcja pętli for,

instrukcja pętli while,

instrukcja przerwania break.

Instrukcja

warunkowa if

Instrukcja warunkowa if wykonuje operację logiczną
relacji a następnie grupę poleceń, jeżeli wynik operacji
logicznej przyjmuje wartość „prawdy logicznej”.
Opcjonalne słowa kluczowe elseif i else umożliwiają
wykonanie alternatywnej grupy poleceń. Słowo kluczowe
end kończy grupę wykonywanych poleceń.

background image

6

Instrukcja warunkowa if

Instrukcja warunkowa if może mieć jedną z dwóch postaci:

if wyrażenie

if wyrażenie

instrukcje

instrukcje

end

elseif wyrażenie

instrukcje

else

instrukcje

end

Wyrażenie w instrukcji if jest wyrażeniem warunkowym i
powinno zwracać wartość logiczną - instrukcje zostaną
wykonane, jeżeli wyrażenie będzie spełnione.

background image

7

Instrukcja warunkowa if

Przykład:

n = 3
if n < 0
m = 10
elseif n= 0
m = 20
else
m = 30
end
m

Ważne jest zrozumienie operacji relacji i działania polecenia
if w przypadku macierzy.

background image

8

Instrukcja warunkowa if

W przypadku, gdy sprawdzamy czy dwie zmienne są równe, możemy
użyć polecenie:

A = 2; B = 3
if A == B
wynik = 1
else
wynik = 0
end
wynik

W przypadku, gdy zmienne A i B są macierzami, operacja relacji
A == B nie sprawdza, czy macierze są równe, ale testuje gdzie
one są równe. W rezultacie otrzymuje macierz zero - jedynkową
przedstawiającą element po elemencie wyniki poszukiwań. Jeżeli
macierze A i B nie mają tych samych rozmiarów, polecenie operacji
relacji: A == B jest błędne.
.

background image

9

Instrukcja warunkowa if

A = [1 2;3 4]; B = [4 5;6 7]
if A == B
wynik = ‘rowne’
else
wynik = ‘rozne’
end
wynik
A == B

Przedstawiony przykład przedstawia błędne użycie polecenia if:

A = zeros(3,3); B = ones(2,2)
if A == B
wynik = ‘rowne’
else
wynik = ‘rozne’
end
wynik

.

background image

10

Instrukcja warunkowa if

W przypadku macierzy, operacje relacji A > B, A < B lub A == B dotyczą
wszystkich elementów porównywanych macierzy:

A = [1 2 3; 4 5 6; 7 8 9]
B = A + 10
if A > B
'wieksze'
elseif A < B
'mniejsze'
elseif A == B
'rowne'
else
error('niespodziewana sytuacja')
end
A == B
A < B
A > B

background image

11

Instrukcja wyboru switch

W ogólnym przypadku instrukcja wyboru switch ma postać:

switch wyrażenie
case wartość1
instrukcje
case wartość2
instrukcje
...
otherwise
instrukcje
end

Wyrażenia w instrukcji switch mogą być liczbą lub łańcuchem
znakowym. Wartość wyrażenia jest porównywana z wartościami
kolejnych przypadków case(wartość1, wartość2,...).

background image

12

Instrukcja wyboru switch

Instrukcja wyboru switch wykonuje grupy poleceń występujące po
słowach kluczowych case i otherwise. Wykonywana jest tylko
jedna grupa poleceń spełniająca zadany warunek. Instrukcja
wyboru switch zakończona jest słowem kluczowym end:

n = 12
switch n
case 0
‘n jest rowne zero’
case 1
‘n jest rowne jeden’
case 2
‘n jest rowne dwa’
otherwise
‘n jest rozne od 0, 1, 2’
end

background image

13

Instrukcja pętli for

Ogólna postać instrukcji pętli for jest następująca:

for zmienna=macierz_wartości
instrukcje
end

W

czasie

wykonywania

instrukcji

for

kolumny

macierzy_wartości

przyporządkowywane

kolejno

iterowanej

zmiennej.

W

praktyce

wyrażenie

macierz_wartości ma najczęściej jedną z postaci:

minimum:maksimum

minimum:krok:maksimum

przy czym krok może być zarówno dodatni, jak i ujemny, a
zmienna nie musi przyjmować wartości całkowitych.

background image

14

Instrukcja pętli for

Instrukcja pętli for powtarza grupę poleceń ustaloną wcześniej
liczbę razy. Słowo kluczowe end kończy pętle.

for n = 1:32
r(n) = rand;
end
r=r’
 
m = 10
n = 10
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j)
end
end
H

background image

15

Instrukcja pętli while

Instrukcja pętli while powtarza polecenia o niezdefiniowaną wcześniej
liczbę powtórzeń określoną przez program na podstawie zadanego
warunku logicznego. Słowo kluczowe end kończy instrukcję pętli.
Program znajdujący miejsca zerowe wielomianu metodą bisekcji:

a = 0; fa = -Inf; b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2; fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end

W rezultacie otrzymuje pierwiastek wielomianu x

3

- 2x – 5:

x = 2.09455148154233

background image

16

Instrukcja pętli while

Instrukcja pętli while ma postać:

while wyrażenie
instrukcje
end

Instrukcje w bloku while są powtarzane dopóty, dopóki część
rzeczywista wyrażenia ma wszystkie elementy różne od zera
(warunek przyjmuje wartość „prawda”). Postać wyrażenia jest
taka sama, jak w instrukcji if.

background image

17

Instrukcja przerwania break

Instrukcja break umożliwia wcześniejsze przerwanie pętli for lub while.
Poniżej przedstawiono zmodyfikowany poprzedni przykład obliczeń.
Dlaczego użycie instrukcji przerwania break jest w tym przypadku dobrą
ideą?

a = 0; fa = -Inf; b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx == 0
break
elseif sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x

background image

18

Skrypty

Skrypt jest plikiem tekstowym o rozszerzeniu *.m (m-plikiem),
zawierającym polecenia i instrukcje programu MATLAB. Skrypty nie
pobierają żadnych argumentów wejściowych, ani też nie zwracają
argumentów wyjściowych - mogą operować tylko na zmiennych
dostępnych w przestrzeni roboczej programu.

Komentarze w skrypcie poprzedza się znakiem %. Interpretator
pomija tekst zawarty pomiędzy znakiem %, a końcem wiersza.
Można w ten sposób tworzyć objaśnienia do skryptów,
umieszczając komentarz w pierwszych wierszach skryptu.
Objaśnienia zostaną wyświetlone na ekranie po wydaniu polecenia:

»

help nazwa_skryptu

gdzie nazwa_skryptu oznacza nazwę pliku tekstowego bez
rozszerzenia *.m.

background image

19

Skrypty

Skrypt generujący macierz 3x3 wypełnioną liczbami pseudolosowymi,
następnie tworzący z niej macierz trójkątną dolną oraz macierz
trójkątną górną zachowany w pliku p1.m:

% Pierwszy przykladowy skrypt
% Generuje macierz 3x3 wypelniona liczbami
% pseudolosowymi i tworzy z niej macierz trojkatna
% dolna oraz gorna
A=rand(3)

% tworzenie macierzy A

Ad=tril(A) % tworzenie macierzy Ad
Ag=triu(A) % tworzenie macierzy Ag
% koniec pierwszego przykladowego skryptu

Skrypt uruchamia się podając jego nazwę (bez rozszerzenia) w wierszu
poleceń programu MATLAB lub w innym skrypcie:

»

p1

background image

20

Skrypty

Uruchomienie skryptu spowoduje wykonanie kolejno wszystkich
poleceń w nim zapisanych i wyświetlenie wyniku:

A =

0.6038

0.0153

0.9318

0.2722

0.7468

0.4660

0.1988

0.4451

0.4186

Ad =

0.6038

0

0

0.2722

0.7468

0

0.1988

0.4451

0.4186

Ag =

0.6038

0.0153

0.9318

0

0.7468

0.4660

0

0

0.4186

background image

21

Skrypty

Jeżeli po instrukcjach generujących macierze A, Ad i Ag umieszczone
są średniki, zmienne zostaną utworzone, ale na ekranie nie pojawi się
żaden efekt uruchomienia skryptu. Po wykonaniu skryptu zmienne A,
Ad i Ag zostaną jedynie zapisane w przestrzeni roboczej programu
MATLAB.

Polecenie

» help

p1

spowoduje wyświetlenie objaśnienia skryptu:

Pierwszy przykladowy skrypt
Generuje macierz 3x3 wypelniona liczbami
pseudolosowymi i tworzy z niej macierz trojkatna
dolna oraz gorna

background image

22

Skrypty

Podczas wykonywania skryptu można wpisywać dane z klawiatury
oraz wyświetlać wyniki w oknie poleceń programu MATLAB za
pomocą instrukcji wejścia/wyjścia, aby wyświetlić wartość
zmiennej wystarczy wpisać we wierszu jej nazwę lub użyć funkcję
disp, umożliwiającą również wyświetlanie tekstów.
Funkcje obsługi wejścia skryptu:

wyświetlenie łańcucha znaków tekst, oczekiwanie na
wpisanie przez użytkownika danej liczbowej i przypisanie jej
zmiennej liczbowej x; zamiast danej liczbowej można wpisać
wyrażenie programu MATLAB, które funkcja obliczy:

» x=input(tekst)

wyświetlenie łańcucha znaków tekst, oczekiwanie na
wpisanie przez użytkownika łańcucha znakowego i
przypisanie go zmiennej x:

» x=input(tekst,’s’)

background image

23

Skrypty

Funkcje obsługi wejścia skryptu:

zatrzymanie

wykonywania

skryptu

do

momentu

naciśnięcia przez użytkownika dowolnego klawisza:

» pause

zatrzymanie wykonywania skryptu na n sekund:

» pause(n)

background image

24

Funkcje

Funkcje programu MATLAB dzielą się na wbudowane i przechowywane w m-
plikach. M-pliki z definicjami własnych funkcji może tworzyć sam użytkownik.
Definicja nowej funkcji zawarta w pierwszym wierszu m-pliku:

słowo kluczowe function;

nazwa funkcji - musi być taka sama, jak nazwa pliku (bez rozszerzenia
*.m), w którym znajduje się funkcja;

wartość funkcji (lista argumentów wyjściowych);

parametry funkcji (lista argumentów wejściowych);

Definicja funkcji ma następującą postać:

function[wart_fun1, wart_fun2,...]=nazwa_funkcji(parametr1, ...)

%ewentualnie opis funkcji w formie komentarza

instrukcje

background image

25

Funkcje

W ciele funkcji, wśród instrukcji, powinno się znaleźć instrukcja
przypisania:

wart_fun1=wynik1;

wart_fun2=wynik2;

...

Funkcja zdefiniowana w powyższy sposób może być używana na równi
z innymi funkcjami programu MATLAB
. Podczas wykonywania
funkcji (podobnie, jak podczas wykonywania skryptu) zostaje
wyświetlony wynik działania każdego polecenia niezakończony
średnikiem.

Przykładowa funkcja

Funkcja przeliczająca radiany na stopnie. Działanie funkcji zostanie
sprawdzone przeliczając na stopnie argument liczby zespolonej z=2-3j:

background image

26

Funkcje

function [y]=radst(x);

%% przelicza radiany na stopnie

%% postać ogólna; radst(x), gdzie x-liczba radianów

y=(x.*180)/pi;

%% koniec

Funkcję należy zapisać w pliku radst.m. Wydanie polecenia

» help radst

powoduje wyświetlenia komentarza funkcji:

przelicza radiany na stopnie

postać ogólna; radst(x), gdzie x-liczba radianów

W celu przeliczenia na stopnie argumentu liczby zespolonej należy
wydać polecenie:

» radst(angle(2-3j))

background image

27

Zmienne lokalne i globalne

Zmienne występujące we funkcjach (w tym argumenty wejściowe)
są lokalne (nie są „widziane” przez inne funkcje i skrypty). Zmienne
utworzone w przestrzeni roboczej programu MATLAB nie są
dostępne we funkcji. Zmienne globalne są deklarowane przy
pomocy polecenia global:

» global w

Polecenie global należy umieścić wszędzie tam, gdzie zmienna
ma być widoczna
(w definicji funkcji, skrypcie, we wierszu
poleceń).

Przykład:

Napisać funkcję funkw, która dla danego x oblicza wartość:
y(x)=ax

2

+bx+c. Funkcję tę wykorzystać w skrypcie kwadrat2.m

do obliczenia y(x) w przedziale <-10,10>. Wartości parametrów a,
b, c określić w skrypcie kwadrat2.m.

background image

28

Zmienne lokalne i globalne

Plik funkw.m:

function y=funkw(x)

global a b c

y=a*x.*x+b*x+c

Plik skrypt2.m:

global a b c

a=1; b=-2; c=1;

x=[-10:10];

y=funkw(x)

Po zadeklarowaniu zmiennych: a, b i c jako globalnych można
ich używać wewnątrz funkcji funkw.

background image

29

Instrukcja return

Instrukcja

return

jest

wykorzystywana

do

wymuszenia

natychmiastowego zakończenia funkcji i powrotu do miejsca jej
wywołania.

Przykład:
Napisać funkcję obliczającą wartość n!. Dla każdej wartości n<1
funkcja powinna zwracać wynik 0.

function s=silnia(n)
% funkcja oblicza n!, dla n<1 zwraca wartosc 0
s=0;
if (n<1)return
else

s=1;
for i=2:n, s=s*i; end

end

background image

30

Funkcje inline

Funkcje inline („we wierszu”) można zdefiniować za pomocą polecenia:

funkcja=inline(wyrażenie)

gdzie:

funkcja - nazwa definiowanej funkcji,
wyrażenie - wyrażenie programu MATLAB w postaci łańcucha

znaków.

Funkcje inline należy jedynie stosować do prostych obliczeń:

Przykład:
Zdefiniować jako funkcję inline funkcję f1(x)=cos(2x-π) oraz obliczyć
jej wartość dla x=3:

»

f1=inline(‘cos(2*x-pi)’)

» y=f1(3)
f1 =

y =

Inline function

-0.9602

f1(x) = cos(2*x-pi)

background image

31

Dziękuję za uwagę


Document Outline


Wyszukiwarka

Podobne podstrony:
1 treści programoweid 8801 ppt
04 rachunkowośćid 5174 ppt
04 Przekładnikiid 5168 ppt
r-autorzy-04, Programowanie, ! Delphi, Delphi 6 - Vademecum profesjonalisty - Tom I
04 Programowanie współbieżne wątki
Lab 04 Programowanie w jezyku powloki
04 ŚRÓDPIERSIEid 4824 ppt
04 programowanie
04 RUPid 5184 ppt
04-program instruktażu stanowiskowego dla fryzjera, Instrukcje BHP, XXIII - SALON FRYZJERSKO - KOSME
2007 2013 Programyid 25731 ppt
Diagnostyka funkcjonalna i programowanie rehabilitacji ppt
ANTROPOLOGIA KULTUROWA program, zagadnienia, ppt
04 PADACZKAid 5131 ppt
1 Budowanie programĂlwid 10307 ppt
OREGOŃSKI PROGRAM REHABILITACJI ppt
04 3id 4781 ppt
04 wykładid 5226 ppt

więcej podobnych podstron