Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Elementy programowania w MATLABIE
Opracował Dr inż. Mirosław Kwiesielewicz Wydział Elektrotechniki i Automatyki Politechnika Gdańska url:
2
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 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 M. Kwiesielewicz. Elementy programowania w MATLABIE
4
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
5
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
6
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
7
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
8
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 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. 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 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 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 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; 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. 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. 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 i,j - jednostki urojone inf, NaN, ver M. Kwiesielewicz. Elementy programowania w MATLABIE
17
M. Kwiesielewicz. Elementy programowania w MATLABIE
Instrukcje sterujące Instrukcja warunkowa if, else i elseif Instrukcja wyboru switch z case i otherwise Pętla while Pętla for M. Kwiesielewicz. Elementy programowania w MATLABIE
18
Instrukcja warunkowa if, else i elseif
Składnia if wyrażenie_logiczne instrukcje elseif wyrażenie_logiczne else end Przykład if n < 0 disp(‘musi byc >=0’); elseif rem(n,2)==0 a=n/2; else a=(n+1)/2; end M. Kwiesielewicz. Elementy programowania w MATLABIE
19
M. Kwiesielewicz. Elementy programowania w MATLABIE
Instrukcja wyboru Składnia switch wyrażenie_logiczne case wartość1 instrukcje case wartość2 otherwise 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 M. Kwiesielewicz. Elementy programowania w MATLABIE
20
M. Kwiesielewicz. Elementy programowania w MATLABIE
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ą M. Kwiesielewicz. Elementy programowania w MATLABIE
21
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
22
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
23
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 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 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 M. Kwiesielewicz. Elementy programowania w MATLABIE
26
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 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 M. Kwiesielewicz. Elementy programowania w MATLABIE
28
M. Kwiesielewicz. Elementy programowania w MATLABIE
Polecenie input Przykład i=input(‘Czy liczyc dalej?(T/N)’,’s’); if isempty(i) i=‘Y’; end Składnia x=input(‘text’) x=input(‘text’,’s’) Opis Wyświetla tekst i zwraca zmienną wprowadzoną przez użytkownika M. Kwiesielewicz. Elementy programowania w MATLABIE
29
M. Kwiesielewicz. Elementy programowania w MATLABIE
Polecenie disp Przykład disp(‘text’) Składnia disp(X) Opis Wyświetla macierz M. Kwiesielewicz. Elementy programowania w MATLABIE
30
M. Kwiesielewicz. Elementy programowania w MATLABIE
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 M. Kwiesielewicz. Elementy programowania w MATLABIE
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.