background image

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 

background image

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”. 

 

background image

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

 

a & b 

a  

 b 

a<b 

a<b 

 

~a 

nie

  a 

a>b 

a>b 

 

 

 

a<=b 

a

 

 

 

a>=b 

a

 

 

 

 

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. 

 

background image

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

polecenia_serii1 

case warto

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).  

 

background image

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. 

background image

str. 33

 

HM

 

Matlab_cw_12__14.doc 

 

M A T L A B  

 

 

 

A-A 

Przekroje 

D  d 

 

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. 
 

background image

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

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

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.