str. 28
HM
Matlab_cw_12__14.doc
M A T L A B
WICZENIE 12
–
Skrypty
W Matlabie mo na pracowa w ten sposób, e wszystkie polecenia potrzebne do
rozwi zania problemu, reguły, funkcje, itp., pisze si w oknie tekstowego edytora,
a potem cały ten tekst zapisuje w pliku z rozszerzeniem „.m”. Tak powstaj tzw. m-pliki,
tak tworzy si programy/procedury (nazywane skryptami) i funkcje.
Do przechowywania takiej twórczo ci przeznaczony jest specjalny folder. Matlab wie,
e musi tam szuka programu (lub funkcji), gdy jest on wywołany (przez wpisanie nazwy
pliku bez rozszerzenia „.m”). My powinni my mie wiadomo , e tylko tam mo emy
zapisywa tworzone m-pliki.
Zadanie 19
1. Sprawd lokalizacj folderu do przechowywania m-plików.
Powinien on by utworzony na dysku
D:,
z dala od macierzystych
plików Matlaba.
2. Upewnij si u prowadz cego zaj cia, e dobrze zlokalizowałe folder.
3. Usu zawarto folderu. Jest to folder, który na potrzeby zaj
nazywa b dziemy naszym folderem roboczym. Praca, któr
zostawili tam koledzy z poprzednich zaj , nie b dzie nam potrzebna.
Za to na ko cu zaj , swoj prac przekopiujesz z tego folderu na
dyskietk .
Skrypt najlepiej utworzy wybieraj c z menu opcj
File/New/M-File
. Otwiera si nowe
puste okienko. Wpisywane tam polecenia nie s od razu wykonywane. Stanowi
zawarto m-pliku rozumian jako tre programu. Zapisanie tej zawarto ci na dysku
odbywa si w klasyczny sposób:
File/Save As...
. Pami ta trzeba, aby skontrolowa
miejsce zapisu i upewni si , e b dzie to folder przeznaczony na m-pliki.
Struktura skryptu jest bardzo prosta. Tak naprawd mo na powiedzie , e w skrajnym
przypadku nie ma adnej struktury. Jest po prostu ci g polece i instrukcji.
Poleca si jednak przestrzega pewnych zasad. Zasady te, to:
rozpoczynanie skryptu od komentarzy opisuj cych jego przeznaczenia i
metod stosowan do oblicze ,
umieszczenie w tym opisie nazw macierzy i zmiennych, które musz znale si
w przestrzeni roboczej Matlaba, by program, czyli skrypt, mógł na nich operowa ,
umieszczenie w tym miejscu tak e opisu macierzy i zmiennych tworzonych
przez program,
opatrywanie sekwencji działa lub ciekawszych instrukcji odpowiednim
komentarzem wyja niaj cym, co ułatwi pó niej ewentualne poprawiane skryptu
lub wykorzystanie jego zawarto ci w innych tworzonych m-plikach (kopiuj/wklej).
Komentarze w skrypcie poprzedza si znakiem procentu %. Znak ten ma znaczenie
tylko do ko ca wiersza. Tre komentarza, który umieszczony jest na pocz tku skryptu
traktowana jest jak tzw. „help” skryptu (obja nienie). Mo na ten „help” wywoła bez
uruchamiania skryptu poleceniem
help nazwa_skryptu
Polecenia skryptu musz odnosi si do zmiennych, które znajduj si w przestrzeni
roboczej Matlaba (w pami ci Matlaba) lub do tych zmiennych, które utworzone s przez
str. 29
HM
Matlab_cw_12__14.doc
M A T L A B
sam skrypt. Te zmienne w wyniku działania skryptu b d tak e znajdowa si w
przestrzeni roboczej.
Uruchomienie skryptu (zadziałanie programu) osi ga si poprzez wpisanie nazwy
m-pliku (bez rozszerzenia) w oknie Command Window.
Przykład. Utworzy skrypt, który działa na macierzach
A
i
B
. Podaje wynik dodania i
odj cia tych macierzy.
Etap 1 - utworzenie skryptu
Dodanie_odjecie
w edytorze Matlaba.
Etap 2 – sprawdzenie działania skryptu w oknie Command Window.
Etap 3 – sprawdzenie opisu skryptu, czyli tzw. „helpa”.
str. 30
HM
Matlab_cw_12__14.doc
M A T L A B
Zadanie 20
Utwórz skrypt słu cy do analizy zło enia dwóch funkcji, których warto ci
podane s w macierzach
A1
i
A2
. Macierze te znajduj si w przestrzeni
roboczej Matlaba. Skrypt wykonuje wykresy w jednym oknie podzielonym
na 4 cz ci. W cz ciach tych powinny si znale :
cz
1 – wykres przebiegu funkcji o warto ciach z macierzy
A1
,
cz
2 – wykres przebiegu funkcji o warto ciach z macierzy
A2
,
cz
3 – wykres sumy tych funkcji,
cz
4 – wykres ró nicy tych funkcji.
Do testowania poprawno ci działania skryptu utwórz w przestrzeni
roboczej Matlaba macierze:
A1
– warto ci funkcji:
f(
α
)=sin(
α
), w przedziale <0, 8
π
>,
A2
– warto ci funkcji:
g(
α
)=sin(0.7
α
), w przedziale <0, 8
π
>.
Zadanie 21
Utwórz dwie macierze, które zawieraj warto ci innych (ni w zadaniu
18) dwóch funkcji. Wykorzystaj skrypt z poprzedniego zadania do analizy
zło enia tych funkcji.
WICZENIE 13
–
Programowanie
Podczas tworzenia skryptów wykorzystuje si tak e j zyk programowania Matlaba. Na
zaj ciach poznamy i zastosujemy podstawowe jego konstrukcje (typowe dla wielu innych
j zyków).
Zestawienie operatorów relacji i operatorów logicznych stosowanych
w wyra eniach j zyka podaje tabela.
Operatory relacji
Operatory logiczne
Operator
Relacja
Operator Działanie
a==b
a=b
a | b
a
lub
b
a~=b
a
≠
b
a & b
a
i
b
a<b
a<b
~a
nie
a
a>b
a>b
a<=b
a
≤
b
a>=b
a
≥
b
Poni ej opisane s krótko podstawowe instrukcje j zyka. Zakłada si przy tym,
e typowe przeznaczenie instrukcji i obrazowy pełny jej opis wraz z przykładami
zastosowania, poznał student na zaj ciach wcze niejszych kursów informatyki. Nale y tu
zwróci uwag przede wszystkim na składni ka dej instrukcji, która mo e nieco ró ni
si od tej, któr zna student z innego j zyka programowania.
str. 31
HM
Matlab_cw_12__14.doc
M A T L A B
Instrukcje j zyka Matlab
if
- instrukcja warunkowa - ma dwie postacie
if wyra enie_log
if wyra enie_log
polecenie1
polecenie1
polecenie2
polecenie2
. . .
. . .
end
elseif wyra enie2
polecenie_m
polecenie_m+1
. . .
else
polecenie_n
polecenie_n+1
. . .
end
switch
-
instrukcja wielowariantowego wyboru
switch warto
_wyra enia
case warto
1
polecenia_serii1
case warto
2
polecenia_serii2
...
otherwise
polecenia_serii_n
end
for
- p tla iteracyjna
for zamienna=od:krok:do
polecenie1
polecenie2
...
end
while
- p tla iteracyjna
while wyra enia_logiczne
polecenie1
polecenie2
...
end
break i return
- instrukcje przerwania
break
– powoduje przerwanie p tli iteracyjnej i wyj cie w działaniach za p tl ,
return
– powoduje przerwanie wykonywania skryptu lub funkcji i powrót za
miejsce wywołania tego skryptu (w innym skrypcie lub oknie Command Window).
str. 32
HM
Matlab_cw_12__14.doc
M A T L A B
Współdziałanie u ytkownika ze skryptem mo na zrealizowa stosuj c ni ej
przedstawione instrukcje. Słu one do wprowadzania danych liczbowych i tekstowych,
pokazywania rezultatów działa na ekranie i chwilowego zatrzymywania działa w celu
oceny wyników.
x=input(‘tekst‘)
wy wietla
tekst
, oczekuje na wpisanie liczby
i naci ni cie klawisza [Enter]
x=input(‘tekst‘,‘s‘
)
wy wietla
tekst
, oczekuje na wpisanie ła cucha
znaków i naci ni cie klawisza [Enter]
disp(x)
wy wietla zawarto macierzy
x
bez podawania jej
nazwy (
x
mo e by ‘tekstem’ jawnym)
tekst=int2str(liczba
) konwersja liczby całkowitej na tekst
tekst=num2str(liczba)
konwersja liczby rzeczywistej na tekst
pause
zatrzymuje wykonywanie skryptu do momentu
naci ni cia dowolnego klawisza
pause(s)
zatrzymuje wykonywanie skryptu na s sekund
Argumentem funkcji
disp
mo e by tylko jedna zmienna. Dlatego je li chcemy
wy wietli informacj o wielu zmiennych w jednym wierszu, to trzeba umie ci je w
jednej macierzy i je li s one ró nego typu, to odpowiednio przekonwertowa do tego
samego typu (oczywiste jest przecie , e macierz mo e zawiera tylko elementy tego
samego typu).
Przykład:
>> x=input('wprowad liczb : ')
wprowad liczb : 1234
x =
1234
>> disp(['wprowadzona liczba=',int2str(x)])
wprowadzona liczba=1234
Zadanie 22
Obiekt badany, to utwierdzona belka o długo ci
l
, obci ona na ko cu
sił skupion
P
. Sporz d skrypt, który słu y do wykre lania zale no
strzałki ugi cia
f
belki, od rodzaju i wielko ci jej przekroju
poprzecznego.
Rodzaje przekrojów, to:
kwadrat – wymiar charakterystyczny – bok
a
,
koło – wymiar charakterystyczny – rednica
d
,
prostok t – wymiary charakterystyczne – boki prostok ta
a
i
b
,
pier cie – wymiary charakterystyczne – rednica zewn trzna
D
,
rednica wewn trzna
d
.
Podczas działania, skrypt pyta o rodzaj przekroju, za ci g warto ci
wymiarów charakterystycznych przekroju pobierany jest z przestrzeni
roboczej Matlaba (a wi c utworzona jest ju np. macierz warto ci
rednic
d
). Tak e pozostałe dane do oblicze (stała długo belki
l
i stała
warto siły obci aj cej
P
) wprowadza u ytkownik działaj c w oknie
Command Window.
str. 33
HM
Matlab_cw_12__14.doc
M A T L A B
A-A
Przekroje
f
l
P
A
A
a
d
D d
a
b
12
4
a
J
=
64
4
d
J
π
=
12
3
ab
J
=
)
(
64
4
4
d
D
J
−
=
π
Wzór na strzałk ugi cia belki ma posta :
EJ
Pl
f
3
3
=
;
E
=2,1
x
10
5
[N/mm
2
]
Skrypt sporz dza wykresy od razu w dwóch skalach, tj. zwykłej
i logarytmicznej.
Dane do testowania skryptu wprowadzaj w nast puj cych jednostkach:
siła w [N],
wielko ci geometryczne w [mm].
WICZENIE 14
–
Funkcje własne
W m-plikach mo na przechowywa tak e własne funkcje. Nazwa utworzonej własnej
funkcji musi by taka sama jak nazwa m-pliku (bez rozszerzenia
.m
). Definicja funkcji
ma posta :
function [wyn1,wyn2,..]=nazwa_fun(param1, param2,..)
% Opis „helpowy” działania funkcji
polecenie1
polecenie2
...
wyn1=wyra enie_prowadz ce_do_wyniku1
wyn2=wyra enie_prowadz ce_do_wyniku2
...
Funkcj własn wywołuje si tak samo jak ka d inn funkcj Matlaba.
str. 34
HM
Matlab_cw_12__14.doc
M A T L A B
Przykład: Napisa funkcj przeliczaj c stopnie na radiany.
Definicja funkcji:
function [y]=stop_rad(x)
% Przelicza stopnie na radiany
a=pi/180;
y=x*a;
% -------------------------------
Zastosowanie funkcji
stop_rad
:
>> a=[10:10:180]
a =
10 20 30 ... 180
>>
z=stop_rad(a)
z =
Columns 1 through 6
0.1745 0.3491 0.5236 0.6981 0.8727 1.0472
Columns 7 through 12
1.2217 1.3963 1.5708 1.7453 1.9199 2.0944
Columns 13 through 18
2.2689 2.4435 2.6180 2.7925 2.9671 3.1416
Zadanie 23
Opracuj funkcj , która słu y do zamiany współrz dnych
kartezja skich
x, y
na współrz dne biegunowe
r,
. Współrz dne
x, y
umieszczone s parami w kolejnych wierszach macierzy. Jest to
macierz argumentów. Podobnie zbudowana jest macierz wyników, tzn.
w ka dym jej wierszu jest para współrz dnych
r,
.
Zało enia dodatkowe:
funkcja działa dla współrz dnych
x, y
punktu we wszystkich
wiartkach kartezja skiego układu współrz dnych,
k t (wynik) okre lany jest w stopniach w zakresie liczb od 0
o
do
360
o
str. 35
HM
Matlab_cw_12__14.doc
M A T L A B
Z a d a n i a d o s a m o d z i e l n e g o w y k o n a n i a
M-pliki, skrypty i funkcje własne
Zadanie 1.
Utwórz skrypt, który przegl da elementy danej macierzy i zeruje
wszystkie te, które przekraczaj zadan graniczn warto . O granic
pyta sam skrypt po jego uruchomieniu. Przeszukiwana macierz
wyj ciowa wygenerowana jest poza skryptem.
Zadanie 2.
Utwórz skrypt, który wybiera z danej macierzy liczby, których
warto mie ci si w zadanym przedziale. Liczby te umieszczane s
wektorze. O granice przedziału pyta sam skrypt po jego
uruchomieniu. Przeszukiwana macierz wyj ciowa wygenerowana jest
poza skryptem.
Zadanie 3.
Napisz skrypt, który spełnia rol specjalnego operatora
działaj cego na macierzy. Potrzebuje w przestrzeni roboczej Matlaba
macierzy
X. Wystawia u ytkownikowi komunikat o mo liwych
działaniach i stosownie do wprowadzonej odpowiedzi tworzy macierz
Y wykonuj c:
transponowanie macierzy
X,
odwracanie macierzy
X,
mno enie według działania
X
x
X
T
,
mno enie według działania
X
T
x
X.
Zadanie 4.
Opracuj funkcj , która przelicza pr dko wyra on w [km/h] na
pr dko wyra on w [m/s].
Zadanie 5.
Opracuj funkcj , która na podstawie współrz dnych dwóch
punktów umieszczonych w dwóch macierzach
A i B, wyznaczy
współczynniki
a i b równania prostej przechodz cej przez te punkty.