18
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski

ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

ĆWICZENIE NR 5

SKRYPTY W PROGRAMIE

KOMPUTEROWYM MATLAB

Dr inż. Sergiusz Sienkowski

Page 2: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

ĆWICZENIE NR 5

Skrypty w programie komputerowym Matlab

5.1. Cel ćwiczenia

Celem ćwiczenia jest opanowanie umiejętności tworzenia i uruchamiania

skryptów w programie komputerowym Matlab.

5.2. Tworzenie i uruchamianie skryptów

Skryptem nazywać będziemy plik tekstowy zawierający polecenia

i funkcje Matlaba. Zadaniem skryptów jest ułatwienie opracowywania

w Matlabie rozbudowanych instrukcji zawierających kombinację poleceń

i funkcji.

W celu utworzenia skryptu należy nacisnąć przycisk New Script

znajdujący się na pasku narzędziowym zakładki HOME lub wybrać

z klawiatury kombinację Ctrl+N.

W wyniku tej operacji wywołane zostanie okno edytora skryptu. Okno to

zostanie osadzone w głównym oknie programu Matlab.

Page 3: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 77

Wyświetlone zostaną również dodatkowe zakładki EDITOR, PUBLISH

i VIEW zawierające narzędzia umożliwiające obsługę skryptu i edycję

zawartego w nim kodu.

W celu zapisu skryptu na dysku komputera lub zapisu postępów

w jego opracowywaniu, należy nacisnąć przycisk Save na pasku

narzędziowym zakładki EDITOR lub wybrać z klawiatury kombinację

Ctrl+S. Podczas pierwszego zapisu skryptu, wyświetlone zostanie okno

Select File for Save As umożliwiające zapis skryptu we wskazanym

miejscu na dysku komputera.

Page 4: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

78 Metody komputerowe w obliczeniach inżynierskich

Każdy kolejny zapis skutkuje zachowaniem aktualnej zawartości skryptu.

Po pierwszym zapisie skryptu na dysku, każde wyjście z okna skryptu do

innego okna programu Matlab skutkuje automatycznym zapisaniem

zawartości skryptu.

Skrypty należą do kategorii m-plików. Zapisuje się je do plików

z rozszerzeniem *.m. Ze względu na sposób uruchamiania skryptów,

zapisywane są one domyślnie w bieżącym katalogu programu Matlab.

Skrypt utworzony w Matlabie uruchamia się w oknie Command

Window wpisując po znaku zachęty >> nazwę utworzonego skryptu bez

rozszerzenia *.m

>>nazwa_skryptu <Enter>

Jeżeli skrypt zapisany został w innym miejscu niż bieżący katalog

Matlaba, to w celu uruchomienia skryptu należy za pomocą paska

narzędziowego, widocznego na poniższym rysunku lub polecania

cd('sciezka_do_katalogu'), przejść do katalogu ze skryptem.

Można również wykorzystać funkcję path i udostępnić programowi

Matlab katalog, w którym skrypt został zapisany. W celu udostępnienia

katalogu i uruchomienia skryptu należy wykonać następujące polecenia

>>path(path,'sciezka_do_katalogu') <Enter>

>>nazwa_skryptu <Enter>

Funkcja path listuje ścieżki do katalogów Matlaba. Zagnieżdżenie tej

funkcji spowoduje, że ścieżka do katalogu ze skryptem zostanie

dołączona do listy ścieżek do katalogów Matlaba.

Page 5: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 79

W celu wyświetlenia wyników działania skryptu stosujemy funkcję disp.

Polecenie (funkcja) Opis

disp(a) Wyświetlenie wartości liczby a

disp('tekst') Wyświetlenie ciągu znaków tekst

disp(['tekst 1' 'tekst 2']) Wyświetlenie dwóch ciągów znaków

tekst 1 i tekst 2 za pomocą wektora

wierszowego dwukolumnowego

Przykład. Utworzenie i uruchomienie skryptu skrypt5_1.m

umożliwiającego wyświetlanie komunikatu 'Hello World!'.

Powyższy skrypt składa się z trzech linii. W linii nr 1 znajduje się

komentarz zaczynający się od znaku procenta %. Zastosowanie znaku %

powoduje, że tekst, który po nim następuje nie będzie traktowany, jako

wykonywalna cześć skryptu. W linii nr 2 znajduje się polecenie clc,

którego zadaniem jest wyczyszczenie okna Command Window po

uruchomieniu skryptu. W linii nr 3 znajduje się funkcja disp, która

umożliwia wyświetlenie komunikatu 'Hello World!'.

Uwaga, każda linia wykonywalnej części skryptu powinna zostać

zakończona średnikiem. Wykonywanie poleceń i funkcji w skrypcie

następuje od góry, w prawo i do dołu.

Ponieważ skrypt skrypt5_1.m został zapisany w katalogu

bieżącym, to jego uruchomienie polega na wpisaniu w oknie Command

Window po znaku zachęty >> nazwy skryptu i naciśnięciu Enter na

klawiaturze.

Page 6: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

80 Metody komputerowe w obliczeniach inżynierskich

Uruchomienie aktywnego skryptu możliwe jest również z zastosowaniem

przycisku Run znajdującego się na pasku narzędziowym

umieszczonym w zakładce EDITOR lub po naciśnięciu na klawiaturze

F5.

W wyniku uruchomienia skryptu w oknie Command Window

wyświetlony zostanie komunikat 'Hello World!'

5.3. Wczytywanie danych do skryptu i ich konwersja

W celu wczytania danych do skryptu i ich konwersji należy zastosować

polecenia (funkcje) przedstawione w poniższej tabeli. Wczytywanie

danych do skryptu następuje po jego uruchomieniu. Konwersja danych

następuje w trakcie działania skryptu.

Polecenie (funkcja) Opis

a=input('tekst') Wprowadzenie do skryptu danej

liczbowej i podstawienie jej do

zmiennej a. Po uruchomieniu skryptu

wyświetlony zostanie tekst 'tekst' (np.

'Podaj wartość liczby a='), po czym na

końcu tekstu nastąpi odczekanie na

wprowadzenie danej liczbowej, która

zostanie podstawiona do zmiennej a,

wprowadzenie danej należy

potwierdzić naciskając Enter na

klawiaturze

Page 7: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 81

a=input('tekst','s') Wprowadzenie do skryptu łańcucha

znaków i podstawienie go do

zmiennej a. Po uruchomieniu skryptu

wyświetlony zostanie tekst 'tekst', po

czym nastąpi odczekanie na

wprowadzenie łańcucha znaków,

który zostanie podstawiony do

zmiennej a, wprowadzenie danej

należy potwierdzić naciskając Enter

na klawiaturze

b=eval(a) Jeżeli zmienna a przechowuje

łańcuch znaków zawierający nazwy

poleceń i/lub funkcji, to funkcja eval

umożliwi ich wyodrębnienie

i wykonanie, otrzymany wynik

zostanie podstawiony do zmiennej b

num2str(a) Zamiana liczby rzeczywistej a na

łańcuch znaków

str2num('tekst') Zamiana łańcucha znaków 'tekst'

odpowiadającego liczbie rzeczywistej

na tę liczbę.

sscanf('tekst','specyfikator') Zamiana łańcucha znaków 'tekst' na

wektor wierszowy zawierający

elementy otrzymane zgodnie

z przyjętym specyfikatorem

formatowana

Page 8: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

82 Metody komputerowe w obliczeniach inżynierskich

Specyfikator Opis

%f Liczby rzeczywiste

%d Liczby całkowite

%u Liczby całkowita

bez znaku

%e Liczba rzeczywista

w notacji naukowej

%s Ciąg znaków

%c Pojedynczy znak

Przykład. Utworzenie i uruchomienie skryptu skrypt5_2.m

umożliwiającego wykonanie podstawowych operacji arytmetycznych na

dwóch liczbach rzeczywistych wprowadzonych z klawiatury.

Powyższy skrypt składa się z sześciu linii. W linii nr 3 i 4 znajduje się

funkcja input umożliwiająca wprowadzenie danych z klawiatury po

uruchomieniu skryptu. W linii nr 5 i 6 znajduje się funkcja disp, której

zadaniem jest wyświetlenie wyników operacji arytmetycznych

wykonanych na dwóch liczbach rzeczywistych. Argumentem funkcji disp

jest czteroelementowy wektor wierszowy. Pierwszy i trzeci element

wektora to łańcuchy znaków, drugi i czwarty element to funkcja num2str,

Page 9: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 83

której zadaniem jest konwersja liczby rzeczywistej, będącej wynikiem

operacji arytmetycznej, na łańcuch znaków.

Przykład. Utworzenie i uruchomienie skryptu skrypt5_3.m

umożliwiającego wyznaczenie średniej z elementów wektora

wierszowego wprowadzonych za pomocą klawiatury.

Powyższy skrypt składa się z pięciu linii. W linii nr 3 znajduje się funkcja

input umożliwiająca wprowadzenie z klawiatury łańcucha znaków T

zawierającego elementy na podstawie, których utworzony zostanie

wektor wierszowy X. W linii nr 4 znajduje się dwuparametrowa funkcja

sscanf. Drugi parametr tej funkcji to specyfikator formatowania '%f' dzięki

któremu nastąpi zamiana łańcucha znaków T na wektor wierszowy X

zawierający liczby rzeczywiste. W linii nr 5 znajduje się funkcja disp,

której zadaniem jest wyświetlenie komunikatu na który składają się

elementy dwuelementowego wektora wierszowego. Pierwszym

elementem tego wektora jest łańcuch znaków. Drugi element to funkcja

konwertująca na łańcuch znaków wynik obliczania wartości średniej

z elementów wektora X. Wartość średnia jest obliczana z zastosowaniem

funkcji mean.

Page 10: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

84 Metody komputerowe w obliczeniach inżynierskich

Przykład. Utworzenie i uruchomienie skryptu skrypt5_4.m

umożliwiającego obliczenie wartości dowolnej funkcji

jednoargumentowej.

Powyższy skrypt składa się z sześciu linii. W linii nr 3 znajduje się

polecenie umożliwiające wprowadzenie za pomocą funkcji input wzoru

jednoargumentowej funkcji w postaci łańcucha znaków. Wprowadzony

z klawiatury łańcuch znaków zostaje podstawiony do zmiennej funkcja.

Argument wprowadzanej funkcji musi zostać oznaczony przez x. Wynika

to z faktu, że dalsza część skryptu zawiera polecenia, które zostaną

wykonane tylko wówczas, gdy argument funkcji zostanie w ten sposób

oznaczony. W linii nr 4 znajduje się polecenie umożliwiające zadanie

wartości zmiennej x w postaci liczby rzeczywistej. W linii nr 5 znajduje się

funkcja eval, która umożliwi obliczenie wartości funkcji dla zadanej

wartości x. Wynik obliczeń jest podstawiany do zmiennej wynik. W linii

szóstej znajduje się funkcja disp, której zadaniem jest wyświetlenie

wzoru wprowadzonej funkcji i wartość tej funkcji dla argumentu x.

5.4. Walidacja skryptów

Matlab oferuje narzędzia umożliwiające sprawdzenie kodu skryptu

w celu wyeliminowania występujących w nim błędów. Poniżej

przedstawiono przykład skryptu zawierającego błędy składni kodu, które

można wykryć i usunąć przy pomocy narzędzi Matlaba.

Page 11: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 85

Powyższy skrypt zawiera dwa błędy w linii nr 2 i jeden błąd w linii nr 3.

Jeden z błędów w linii nr 2 wykrywany jest w czasie rzeczywistym.

Sygnalizowane jest to umieszczeniem żółtopomarańczowego znacznika

w linii, w której występuje błąd. Wykryty błąd dotyczy braku średnika na

końcu polecenia. Po wskazaniu myszką miejsca, w którym znajduje się

znacznik, wyświetlony zostanie komunikat błędu wraz z propozycją jego

naprawy.

Po naciśnięciu przycisku Fix wykryty błąd zostanie naprawiony. Drugi

błąd, który występuje w linii nr 2 dotyczy funkcji, której zadaniem jest

wprowadzanie danych do skryptu. W tym przypadku nazwa

zastosowanej funkcji jest nieprawidłowa. Podobnie jest z trzecim błędem

występującym w linii nr 3. Nazwa funkcji, której zadaniem jest

wyświetlenie wartości liczbowej zmiennej a jest nieprawidłowa. Błędy

w nazwach funkcji nie są wykrywane w czasie rzeczywistym. Aby je

wykryć należy w prawym górnym rogu okna skryptu kliknąć na przycisk

Show Editor Actions i rozwiniętego menu wybrać opcje Show Code

Analyzer Raport i Show Dependency Report.

Page 12: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

86 Metody komputerowe w obliczeniach inżynierskich

W wyniku wybrania tych opcji utworzone zostaną raporty z informującymi

o błędach występujących w skrypcie.

Wygenerowane raporty pokazują, że Matlab nie rozpoznaje w skrypcie

funkcji dip i imput. Takie funkcje mogły w ogóle nie zostać

zaimplementowane, nie są wbudowane w Matlaba lub noszą niewłaściwą

nazwę. W rozważanym przypadku, powstałe błędy związane są

niewłaściwymi nazwami funkcji disp i input.

Page 13: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 87

Wykrycie błędów występujących w skrypcie odbywa się również

po uruchomieniu skryptu za pomocą narzędzia Run znajdującego się na

pasku narzędziowym w głównym oknie programu Matlab. W przypadku

skryptu z powyższego przykładu, w oknie Command Window

wyświetlony zostanie komunikat o błędzie dotyczącym funkcji imput, a po

jego usunięciu i ponownym uruchomieniu skryptu, wyświetlony zostanie

kolejny komunikat o błędzie dotyczącym funkcji dip.

Matlab umożliwia analizowanie kodu skryptu z zastosowaniem

wbudowanego debuggera1. Działanie debuggera zostanie wyjaśnione na

przykładzie poniższego skryptu.

Przykład. Utworzenie i uruchomienie skryptu skrypt5_6.m

umożliwiającego obliczenie wartości funkcji f(x)=ax2+bx+c w przedziale

[-10, 10], gdzie a, b i c to liczby rzeczywiste wprowadzane z klawiatury.

1 Debugger to program umożliwiający dynamiczną analizę skryptów. Taka analiza polega na sprawdzaniu działania fragmentów lub całości kodu, oraz odnajdywaniu i identyfikacji występujących w nim błędów.

Page 14: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

88 Metody komputerowe w obliczeniach inżynierskich

W celu wykorzystania debggura do analizy kodu skryptu należy wykonać

poniższe kroki.

1. Umieścić w skrypcie przynajmniej jeden znacznik, dzięki któremu

możliwe będzie skorzystanie z narzędzi debggura. W tym celu należy

kliknąć w znak "-" znajdujący obok numeru linii skryptu. W wyniku tej

operacji utworzony zostanie znacznik w postaci czerwonej kropki.

Powtórzenie tej operacji w innym miejscu skryptu, spowoduje

umieszczenie kolejnego znacznika. W skrypcie z przykładu znaczniki

zostały umieszczone w liniach nr 3 i 8.

2. Uruchomić skrypt za pomocą narzędzia Run z paska narzędziowego

w zakładce EDITOR. Jeżeli w skrypcie umieszczone zostały znaczniki, to

w tej samej zakładce wyświetlone zostaną narzędzia debuggera

widoczne na poniższym rysunku.

Znaczenie narzędzi przedstawiono w poniższej tabeli.

Page 15: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 89

Narzędzie Opis

Przejście do kolejnego znacznika w kodzie,

wszystkie polecenia między znacznikami zostaną

wykonane

Przejście do kolejnej linii kodu, wszystkie polecenia

umieszczone w linii kodu zostaną wykonane

Przejście do zagnieżdżonego fragmentu kodu

Wyjście z zagnieżdżonego fragmentu kodu

Wyłączenie programu debuggera

Po uruchomieniu skryptu z przykładu, nastąpi wykonane polecenia clc,

i zatrzymanie wykonywania skryptu w miejscu wskazywanym zieloną

strzałką w oczekiwaniu na zastosowanie narzędzi debuggera.

W tym samym czasie okno Command Window przyjmie postać widoczną

na poniższym rysunku.

Page 16: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

90 Metody komputerowe w obliczeniach inżynierskich

3. Zastosować narzędzia debuggera w celu przeanalizowania kodu

skryptu. W przykładzie, w wyniku zastosowania narzędzia Step, nastąpi

realizacja polecenia z linii nr 3 i przejście do linii nr 4 skryptu.

Będzie temu towarzyszyła konieczność podania w oknie Command

Window wartości liczbowej, która zostanie podstawiona pod zmienną a.

Uwaga, jeżeli w linii zawierającej funkcję num2str zastosowane zostanie

narzędzie Step In, to nastąpi przejście do sprawdzenia zagnieżdżonego

kodu funkcji num2str, który umieszczony jest w m-pliku Matlaba o nazwie

num2str.m.

Uwaga, jeżeli w linii zawierającej znacznik zastosujemy narzędzie

Continue, to nastąpi przejście do kolejnego znacznika, przy czym

wszystkie polecenia między znacznikami zostaną wykonane.

Kontynuowanie stosowania narzędzia Step spowoduje realizację

poleceń umieszczonych w kolejnych liniach skryptu, aż do wyświetlenia

wartości funkcji.

Page 17: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

Ćwiczenie 5. Skrypty w programie komputerowym Matlab 91

5.5. Program ćwiczenia

1. Utworzyć w Matlabie skrypt o nazwie skrypt5_1.m, który po

uruchomieniu wyświetli w oknie Command Window informacje

o podgrupie laboratoryjnej, zgodnie z poniższym schematem

"Metody komputerowe w obliczeniach inżynierskich

Dane osobowe: Anna Nowak, Jan Kowalski

Grupa: 11 AiR-SP/A

Podgrupa laboratoryjna nr: 1".

2. Utworzyć w Matlabie skrypt o nazwie skrypt5_2.m, który po

uruchomieniu będzie pobierał dane osobowe, nazwę grupy i numer

podgrupy, a następnie wyświetli w oknie Command Window

informacje o podgrupie laboratoryjnej zgodnie ze schematem

przedstawionym w punkcie 1.

3. Utworzyć w Matlabie skrypt o nazwie skrypt5_3.m, który po

uruchomieniu wyświetli w oknie Command Window wyniki obliczania

rezystancji zastępczej układu

a) szeregowo połączonych rezystorów,

b) równolegle połączonych rezystorów.

Rezystancje rezystorów wprowadzić do skryptu za pomocą łańcucha

znaków. Wskazówka. Do obliczenia rezystancji zastępczej

zastosować funkcję sum oraz tablicowe odwracanie wektora.

Page 18: ĆWICZENIE NR 5 SKRYPTY W PROGRAMIE KOMPUTEROWYM MATLAB

92 Metody komputerowe w obliczeniach inżynierskich

4. Utworzyć w Matlabie skrypt o nazwie skrypt5_4.m, który wyświetli

w oknie Command Window wynik obliczania prądu elektrycznego

płynącego przez układ szeregowo połączonych rezystorów

umieszczonych w zamkniętym obwodzie elektrycznym. Wartość

prądu obliczyć korzystając z Prawa Ohma na podstawie spadku

napięcia na układzie szeregowo połączonych rezystorów i rezystancji

zastępczej tego układu.

5. Utworzyć w Matlabie skrypt o nazwie skrypt5_5.m, który po

uruchomieniu wyświetli w oknie Command Window wyniki obliczania

a) wartości średniej,

b) wartości skutecznej,

c) wartości międzyszczytowej,

na podstawie wyników pomiaru napięcia elektrycznego multimetrem

cyfrowym. Wyniki pomiaru napięcia wprowadzić do skryptu za

pomocą łańcucha znaków. Wskazówka. Zastosować do obliczeń

funkcję mean oraz tablicowe potęgowanie wektora.

Literatura

[1] Luzar M., Metody komputerowe w obliczeniach inżynierskich, Wykład

dla Studentów Automatyki i Robotyki, WIEA, UZ,

www.issi.uz.zgora.pl

[2] Czajka M., MATLAB. Ćwiczenia, Helion 2005

[3] Mrozek B., Mrozek Z., MATLAB i Simulink. Poradnik użytkownika,

Helion 2004