1 / 21

Programowanie w języku Matlab

Programowanie w języku Matlab. Instrukcje sterujące Funkcje. Instrukcje sterujące – z reguły stosowan e do sterowania wykonaniem podprogramów zapisanych w m-plikach. if , switch , for , while , continue , break , try-catch , return. Instrukcja if. if ww1 p1 elseif ww2 p2

cady
Télécharger la présentation

Programowanie w języku Matlab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie w języku Matlab Instrukcje sterujące Funkcje

  2. Instrukcje sterujące – z reguły stosowane do sterowania wykonaniem podprogramówzapisanych w m-plikach • if, • switch, • for, • while, • continue, • break, • try-catch, • return.

  3. Instrukcja if if ww1 p1 elseif ww2 p2 elseif ww3 p3 : else pn end wwi – wyrażenie warunkowe dające wynik typu logicznego pi – ciąg poleceń Części elseif i elsenie sąobowiązkowe

  4. Wyrażenia warunkowe: • proste: count < limit, isreal(A) • złożone: (count < limit) && ((height - offset) >= 0) • Jeżeli wynikiem wyrażenia jest: • skalar o wartości logicznej 1, • tablica ze wszystkimi elementami o wartości logicznej 1 • wówczas warunek jest spełniony. Wykonywany jest ciąg poleceń odpowiadający pierwszemu spełnionemu warunkowi lub podany po słowie else, jeżeli żaden nie jest spełniony. • Zapis niektórych wyrażeń można uprościć np. A ~= 0 jest równoważne A. • Nie zawsze zachodzi potrzeba obliczania wartości wyrażeń prostych w wyrażeniach złożonych: • A && B – wartość B jest obliczana tylko wtedy, gdy A== 1, • A || B – wartość B jest obliczana tylko wtedy, gdy A== 0.

  5. Instrukcja switch switch wyr case s1 p1 case s2 p2 : otherwise pn end wyr – wyrażenie dające w wyniku skalar lub łańcuch si – stała lub lista stałych Część otherwisenie jest obowiązkowa Wykonywany jest ciąg poleceń odpowiadający stałej równej wartości wyrażenia lub podany po słowie otherwise przy braku zgodności Jeśli wybór odbywa się na podstawie zawartości łańcucha – lepiej stosować instrukcję switch niż if ... elseif ... else ...

  6. Instrukcja for for zs = wyr p end zs – zmienna sterująca wyr – wyrażenie p – ciąg poleceń Liczba powtórzeń jest równa liczbie wartości, jakie może przyjąć zmienna sterująca.

  7. Instrukcja while while ww p end ww – wyrażenie warunkowe p – blok poleceń Ciąg poleceń wykonywany jest tak długo, jak warunek jest spełniony.

  8. Instrukcja continue Powoduje przerwanie bieżącego obiegu pętli i przejście do następnego. Instrukcja break Powoduje przerwanie pętli. Instrukcja try-catch try pt catch pc end pt, pc – ciągi poleceń Jeśli wykonanie któregoś z poleceń ciągu pt zakończy się niepowodzeniem, wykonywany jest ciąg poleceń pc

  9. Instrukcja return Umożliwia przerwanie działania m-pliku w dowolnym miejscu.

  10. M-pliki funkcyjne Struktura m-pliku funkcyjnego:

  11. - przykłady linii definicji: • function [x,y,z] = func1(a,b,c) • function [] = func2(a) • function func2(a) • function [x,y] = func3() • function [x,y] = func3 • nazwy: funkcji i m-pliku powinny być takie same, • argumenty są przekazywane przez wartość, • zmienne tworzone w funkcji są zmiennymi lokalnymi, przechowywanymi • w osobnej przestrzeni roboczej, • zmienne lokalne przestają istnieć po zakończeniu działania funkcji, chyba że • zostały zadeklarowane jako trwałe (ang. persistent),

  12. funkcję można wywołać z mniejszą liczbą argumentów, • funkcja może zwrócić mniejsza liczbę wartości, • funkcja może wykonywać operacje na tych zmiennych z przestrzeni • roboczej, które zostaną zadeklarowane jako globalne: • global z1 z2 ... • Deklarację taką trzeba podać w wierszu poleceń oraz w treści funkcji.

  13. function s = suman(n) % SUMAN suma n wyrazów ciągu % Funkcja oblicza sumę n wyrazów ciągu % 1 + 1/2 + 1/3 + .... + 1/n % Argument n powinien być skalarem. if nargin < 1 % blok 1 error('Błąd - wymagany jeden argument'); end if prod(size(n)) ~= 1% blok 2 error('Błąd - argument powinien być skalarem'); end s = 1;% blok 3 for k = 2:n s = s + 1/k; end

  14. Funkcje o dowolnej liczbie argumentówi wartości • standardowe tablice komórkowe: varargin i varargout, • - zmienne te należy wymieniać na końcach list. • Podfunkcje • m-plik może zawierać wiele funkcji o różnych nazwach, • pierwsza funkcja to funkcja podstawowa, pozostałe to podfunkcje, • podfunkcje mogą być wywoływane tylko przez funkcję podstawową, • podfunkcja nie ma dostępu do zmiennych lokalnych funkcji podstawowej • i innych podfunkcji.

  15. Funkcje zagnieżdżone • są to funkcje definiowane w treści innych funkcji, • treść funkcji zagnieżdżonych, jak również treści pozostałych funkcji • w m-pliku, musi być zakończona słowem end.

  16. function A(x, y) % funkcja podstawowa B(x, y); D(y); function B(x, y) % zagnieżdżona w A C(x); D(y); function C(x) % zagnieżdżona w B D(x); end end function D(x) % zagnieżdżona w A E(x); function E(x) % zagnieżdżona w D ... end end end

  17. - funkcję zagnieżdżoną może wywołać funkcja: • z sąsiedniego wyższego poziomu zagnieżdżenia (tutaj A może wywołać: B i D, • nie może wywołać: C oraz E), •  z tegopoziomu zagnieżdżenia (B może wywołać D i na odwrót), •  z dowolnego niższego poziomu zagnieżdżenia (C może wywołać: B i D, • nie może wywołać E), • funkcje z dowolnego poziomu zagnieżdżenia mogą wywoływać podfunkcje, • do zmiennych lokalnych funkcji zagnieżdżonej mogą się odwoływać funkcje • z wyższych poziomów zagnieżdżenia, • funkcja zagnieżdżona ma dostęp do zmiennych lokalnych funkcji z wyższych • poziomów zagnieżdżenia, • interpretacja odwołań zmiennych: varargin i varargout – zależy od tego, • czy występują one w definicji funkcji czy nie.

  18. Funkcje prywatne • zapisywane w m-plikach w podkatalogach o nazwie private, • dostępne tylko dla funkcji i skryptów z katalogu nadrzędnego, • podkatalogów z funkcjami prywatnymi nie należy dołączać do listy katalogów • przeszukiwanych • Funkcje przeciążone • stosowane wówczas, gdy sposób przetwarzania danej zależy od jej typu, • funkcje te mają takie same nazwy, • są one przechowywane w podkatalogach o nazwach @nazwa_typu.

  19. Definiowane funkcji w wierszu poleceń • Funkcje anonimowe: • zawierają jedno wyrażenie, • postać definicji • zmienna = @(lista argumentów) wyrażenie • - argumenty oddziela się przecinkami, lista może być pusta. • operator @ tworzy tzw. uchwyt funkcji, • wywołanie funkcji anonimowej • zmienna(argumenty) • zmienna() • w wyrażeniu mogą wystąpić zmienne z przestrzeni roboczej, ale funkcja będzie • używać wartości, które zmienne miały w chwili definicji funkcji, • - można tworzyć komórkowe tablice z uchwytami.

  20. Funkcje definiowane przy użyciu funkcji inline: • zawierają jedno wyrażenie, • postać definicji • zmienna = inline(’wyrażenie’) • zmienna = inline(’wyrażenie’, ’argument 1’, ...) • W pierwszym przypadku funkcja inline sama określi argumenty wyrażenia.

  21. Uchwyty do funkcji • można tworzyć uchwyty również do funkcji zapisanych w m-plikach, • uchwyt do funkcji jest argumentem niektórych standardowych funkcji • Matlaba np. fzero.

More Related