Upload
others
View
12
Download
0
Embed Size (px)
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
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.
Ć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.
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.
Ć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.
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
Ć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
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,
Ć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.
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.
Ć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.
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.
Ć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.
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.
Ć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.
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.
Ć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.
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