Progr (2)

background image

Elementy programowania
w MATLABIE

Opracował

Dr inż. Mirosław Kwiesielewicz

Wydział Elektrotechniki i Automatyki

Politechnika Gdańska

email: mkwies@ely.pg.gda.pl

url: http://www.ely.pg.gda.pl/~mkwies/

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

2

Wprowadzenie

Pliki zawierające kod języka programowania
MATLABA nazywają się M-plikami:

funkcje, które na podstawie wprowadzonych

argumentów zwracają wynik,

skrypty, wykonujące sekwencje komend

MATLABA;

M-pliki tworzy się za pomocą edytora tekstowego

Wykonanie M-pliku poprzez wywołanie go z
poziomu poleceń MATLABA

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

3

Charakterystyka M-plików

Skrypty

Nie posiadają argumentów
wejściowych, ani wyjściowych

Operują na danych w
przestrzeni roboczej

Wygodne, kiedy często należy
wykonać sekwencję tych
samych poleceń

Funkcje

Mogą posiadać argumenty
wejściowe i wyjściowe

Wewnętrzne zmienne są
lokalne dla funkcji

Wygodne do rozszerzenia
MATLABA o własne
aplikacje

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

4

Struktura funkcji

function f = fact(n)
% FACT Factorial
% FACT(N) return ...
% Put simply, FACT(N)....

f=prod(1:n);

Linia definicji. Nazwa funkcji

oraz argumenty wejściowe
i wyjściowe

Linia H1. Wykorzystywana

przez polecenie lookfor

Tekst pomocy. Wyświetlany

przy pomocy polecenia
help, łącznie z linią H1.

Cia

ł

o funkcji. Kod

obliczeniowy

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

5

Skrypty

Skrypty są najprostszym rodzajem M-plików.

Nie posiadają ani argumentów wejścia, ani wyjścia

Są wygodne do wielokrotnego wykonywania
sekwencji komend

Operują na danych z przestrzeni roboczej
(WorkSpace) lub tworzą nowe dane

Utworzone dane również pamiętane są w przestrzeni
roboczej

Po zakończeniu działania skryptu wszystkie dane
pozostają w przestrzeni roboczej

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

6

Przykładowy skrypt

% An M-file script ......
theta = -pi:0.01:pi;
rho(1,:) = 2*sin(5*theta).^2;
...
...
for i=1:4

polar(theta,rho(i,:))
pause

end

Linia komentarza

Linie oblicze

ń

Wy

ś

wietlanie wyników

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

7

Przykład funkcji

function

y = average(x)

% AVERAGE Mean of vector elements.

% AVERAGE(X), where X is a vector, is the mean of vector

elements.

% Non-vector input results in an error.

[m,n] = size(x);

if

(~((m==1) | (n==1) | (m==1 & n==1)))

error(

'Input must be a vector'

)

end

y = sum(x)/length(x);

% Actual computation

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

8

Nazwy funkcji

Nazwa funkcji musi się zaczynać litrą

MATLAB wykorzystuje 31 pierwszych znaków

Generalnie liczba znaków zależy od systemu
operacyjnego

Jeśli nazwa funkcji w linii definicji jest inna niż
nazwa pliku, w którym funkcja jest zapamiętana,
przyjmowana jest ta ostatnia

Lepiej jednak używać tych samych nazw

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

9

Kolejność poszukiwania nazwy

zmienne w przestrzeni roboczej

zbiór podfunkcji zawartych w tym samym pliku co
funkcja wywołująca

zbiór funkcji w katalogu prywatnym

katalogi ustawione w ścieżce dostępu

Uwaga. Funkcja po wywołaniu przechowywana jest

w pamięci w postaci pseudokodu. Do jej usunięcia
komenda clear.

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

10

Tworzenie pseudokodu funkcji

Pseudokod funkcji tworzy się przy użyciu polecenia
pcode, np.:

pcode average;

Polecenie to tworzy Pseudokod funkcji w pliku
average.p

Polecenie jest użyteczne w przypadku wywoływania
aplikacji graficznych oraz, gdy użytkownik chce
ukryć kod napisanej funkcji

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

11

Przekazywanie argumentów
funkcji

MATLAB przekazuje te parametry funkcji przez
wartość, które funkcja modyfikuje

Jeśli funkcja nie zmienia argumentu, ale używa go
tylko w obliczeniach, to MATLAB przekazuje
argument przez odniesienie w celu optymalizacji
wykorzystania pamieci

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

12

Przestrzeń robocza funkcji

Każda M-funkcja posiada własny obszar pamięci,
oddzielony od przestrzeni roboczej MATLABA

Obszar ten zwany jest przestrzenią roboczą funkcji

Każda funkcja posiada swój własny obszar roboczy

W MATLABIE można zdefiniować zmienne globalne

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

13

Sprawdzenie liczby argumentów
funkcji

Funkcje nargin i nargout pozwalają na określenie z

jaką liczbą argumentów wejściowych i wyjściowych
funkcja jest wywoływana, n.p.:

function c = testtarg1(a,b)
if (nargin == 1)

c = a.^2;

eleseif (nargin == 2)

c = a + b;

end;

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

14

Przekazanie liczby zmiennych
argumentów

Funkcje varargin i varagout pozwalają na
przekazanie liczby wejść i zwrócenie liczby wyjść.

MATLAB przechowuje argumenty w specjalnej
tablicy cell array.

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

15

Zmienne lokalne i globalne

Każda funkcja, zdefiniowana w MATLABIE posiada
swoje własne zmienne lokalne

W celu dostępu do danej zmiennej z innej funkcji
lub przestrzeni roboczej MATLABA należy tą
zmienną zadeklarować jako globalną we wszystkich
miejscach, gdzie ma dostępna, n.p.:

global ALPHA BETA

Zalecane jest użycie wielkich liter.

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

16

Zmienne i stałe specjalne

ans - zawiera ostatnią zmienną, jeśli do wyrażenia
nie przypisano żadnej zmiennej wyjściowej

eps - dokładność operacji zmiennoprzecinkowych
w MATLABIE

realmax - największa liczba zmiennoprzecinkowa

realmin - najmniejsza liczba zmiennoprzecinkowa

pi - 3.141592...

i,j - jednostki urojone

inf, NaN, ver

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

17

Instrukcje sterujące

Instrukcja warunkowa if, else i elseif

Instrukcja wyboru switch z case i otherwise

Pętla while

Pętla for

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

18

Instrukcja warunkowa if, else i
elseif

Składnia

if wyra

ż

enie_logiczne

instrukcje

elseif wyra

ż

enie_logiczne

instrukcje

else

instrukcje

end

Przykład

if n < 0

disp(‘musi byc >=0’);

elseif rem(n,2)==0

a=n/2;

else

a=(n+1)/2;

end

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

19

Instrukcja wyboru

Składnia

switch wyra

ż

enie_logiczne

case warto

ść

1

instrukcje

case warto

ść

2

instrukcje

otherwise

instrukcje

end

Przykład

switch input_num

case -1

disp(‘negative one’);

case 0

disp(‘zero’);

case 1

disp(‘positive one’);

otherwise

disp(‘other value’);

end

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

20

Pętla while

Składnia

while wyra

ż

enie

instrukcje

end

Pętla while wykonuje
instrukcje tak długo dopóki
wyrażenie jest prawdziwe

W przypadku macierzy
wszystkie jej elementy muszą
być prawdziwe

Można ją przerwać
poleceniem break

Przykład

n=1;
while prod(1:n) < 1e100

n=n+1;

end

Powyższa pętla znajduje
pierwszą liczbę naturalną
dla której n! jest liczbą 100
cyfrową

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

21

Pętla for

Składnia

for indeks=start:krok:koniec

instrukcje

end

Domyślna wartość kroku
wynosi 1

Dla ujemnego kroku koniec
kiedy indeks < koniec

Przykład

min_value=a(1);

for i=2:n

if a(i)<min_value

min_value=a(i);

end

end

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

22

Podfunkcje

function [avg, mec]=newstats(u)
%NEWSTATS Find mean and .....
n=length(u);
avg=mean(u,n);
med=median(n,u);

function a=mean(v,n)
%Calculate average
a=sum(v)/n;

function m=median(v,n)
%Calculate median
...
end

Funkcja główna
Primary function

Podfunkcja 1
Subfunction

Podfunkcja 2
Subfunction

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

23

Funkcje prywatne

Muszą być umieszczone w katalogu o specjalnej
nazwie private i są widoczne tylko przez funkcje z
katalogów wyższych

Można w ten sposób definiować funkcje o takich
samych nazwach jak oryginalne funkcje pakietu

Należy utworzyć po prostu katalog private

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

24

Polecenia użyteczne przy
tworzeniu własnych M-plików

disp - wyświetlenie tekstu lub macierzy

echo - wyświetlenie tekstu lub macierzy

error - przerwanie wykonywania M-pliku

input - wprowadzenie danej wejsciowej

keybord - udostępnienie klawiatury

menu - tworzenie listy wyboru

pause - zatrzymanie wykonywania M-pliku

return - powrót do funkcji wywołującej lub linii
komend

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

25

Niestandardowe uruchamianie
poleceń

eval - uruchomienie polecenia podanego jako stała
łańcuchowa

feval - wywołanie i przekazanie parametrów funkcji

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

26

Funkcje pomocnicze

clock - CLOCK = [year month day hour minute seconds]

cputime - czas w sekundach od uruchomienia MATLABA

etime - pomiar różnicy czasów

flops - liczba wykonanych operacji zminnoprzecinkowych

tic, toc - załączenie i wyłączenie stopera

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

27

Operacje wejścia wyjścia

Otwieranie i zamykanie plików

Operacje wejścia/wyjścia niesformatowane

Operacje wejścia/wyjścia sformatowane

Operacje wskaźnikowe

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

28

Polecenie input

Składnia

x=input(‘text’)
x=input(‘text’,’s’)

Opis

Wyświetla tekst i zwraca

zmienną wprowadzoną
przez użytkownika

Przykład

i=input(‘Czy liczyc dalej?(T/N)’,’s’);
if isempty(i)

i=‘Y’;

end

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

29

Polecenie disp

Składnia

disp(X)

Opis

Wyświetla macierz

Przykład

disp(‘text’)

background image

2007-10-08

M. Kwiesielewicz. Elementy programowania w MATLABIE

30

Polecenie fprintf

Składnia

fprintf(łańcuch,lista)

Opis

Formatowane wyświetlanie wyniku
- łańcuch oznacza format - lista listę

zmiennych

Przykłady elementów
łańcucha

%f
%.3f
%.3e

Więcej szczegółów - opis
języka C


Wyszukiwarka

Podobne podstrony:
Program Progr Syst i Wspolb2011
PHP podst progr suplement wyklad grudzien 2011
progr siec, Materiały Ekonomiczna, badania operacyjne
progr, Gazetka szkolna
MSG I STDZIEN-ZAKRES I PROGr.012008(1), SGH, MSG
indyw.progr.eduk.ter, TERAPIA
Progr Pedag Podst? SP WYSLAC
Jezyki progr 05
Wspolczesne probl ps Minim progr, resocjalizacja1
Opis zawodu Realizator progr. telewizyjnych, Opis-stanowiska-pracy-DOC
Plan i progr cwiczen dla bud 2010
progr. zajęć, higiena i epi
PROGr Zoosanitarne OS lato 10 11
javaczeni, 08.09.12 Egzamin Progr sd, Zad
testy sprawdzajace, Zbiorcze zestawienie wyników testy sprawdzającego poziom wiedzy dzieci 3 - letni
(Microsoft PowerPoint 1 Protoko3 dyplomatyczny progr (2)
programowanie dla walka w cnc predk skraw Przyklad recz progr OSN
Progr-Wsp-Wstep4

więcej podobnych podstron