Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
PRACA ZE SKRYPTAMI
1. Informacje ogólne
Pliki, które zawierają kod w języku Matlaba nazywane są M-plikami.
Pliki te charakteryzują się rozszerzeniem
.m
.
M-pliki można tworzyć używając dowolnego edytora tekstowego,
chociażby Notatnika. Dużo efektywniejsze jest jednak używanie programów,
które kolorują składnie skryptu tak, jak to czyni edytor, który dostarczany jest z
Matlabem (Rys. 1). Inne edytory oferujące to oraz wiele innych udogodnień to
TextPad dla środowiska Windows oraz Nedit dla Linuksa.
Rys. 1 Przykład kolorowania składni w skrypcie
Stworzony przy użyciu edytora tekstowego skrypt może być użyty jako
funkcja lub polecenie.
Zalecenia co do nazywania M-plików – nazwa pliku:
musi zaczynać się literą,
nie może zawierać spacji,
nie może zawierać znaku – (minus) oraz innych operatorów,
powinna być bez polskich liter.
PRz, KMK, 01’2005
str. 1/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
2. Wyświetlenie katalogu roboczego
Wyświetlenie katalogu roboczego odbywa się przy użyciu polecenia:
» pwd
W odpowiedzi dostaniemy:
ans =
C:\moje dokumenty
3. Zmiana katalogu roboczego
Zmiana katalogu odbywa się przy użyciu polecenia:
>> cd nazwakatalogu
Przykładowo:
>> cd pi
jeżeli nazwa katalogu była skrótem od Podstawy Informatyki, lub:
>> cd 'podstawy informatyki'
jeżeli nazwa katalogu była dwuwyrazowa, rozdzielona spacją. W tym
drugim przypadku niezbędne jest użycie apostrofów.
Katalog roboczy jest cały czas wyświetlana w polu:
Current Directory
tak,
jak to jest widoczne na Rys. 2.
Rys. 2 Katalog roboczy
4. Utworzenie nowego skryptu
W celu rozpoczęcie pracy nad nowym skryptem należy wybrać z menu
File
polecenie
New
i następnie
M-File
. Innym sposobem jest napisanie w linii
komend Matlaba:
>> edit silnia
PRz, KMK, 01’2005
str. 2/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
gdzie silnia będzie nazwą pliku, w którym zapisany zostanie skrypt.
Rozszerzenie
.m
zostanie przyporządkowane automatycznie. Użycie funkcji
edit spowoduje sprawdzenie czy w katalogu roboczym istnieje już plik o
podanej nazwie (w tym przykładzie silnia.m), a jeśli nie, to zostanie wyświetlone
okienko dialogowe jak to pokazane na Rys. 3 – potwierdzenie spowoduje
uruchomienie wbudowanego edytora.
Rys. 3 Potwierdzenie utworzenia nowego M-pliku
5. Edycja istniejącego skryptu
W celu edycji istniejącego skryptu należy wybrać z menu
File
polecenie
Open
. Następnie wystarczy wskazać w standardowym okienku dialogowym
(Rys. 4) nazwę pliku, który ma być poddany edycji.
Rys. 4 Okienko dialogowe – otwórz skrypt
Innym sposobem jest napisanie w linii komend Matlaba:
>> edit nazwapliku
PRz, KMK, 01’2005
str. 3/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
gdzie nazwapliku jest nazwą istniejącego w katalogu roboczym pliku o
rozszerzeniu
.m
.
6. Uruchomienie skryptu
Wykonanie skryptu można wywołać na dwa sposoby. Pierwszy z nich
użycie jednego z mechanizmów, w które wyposażony został wbudowany edytor
M-plików. Do dyspozycji mamy polecenie
Run
z menu
Debug
lub aktywny
przycisk spośród pokazanych na Rys. 5.
Rys. 5 Belka
narzędziowa Debug
Drugi sposób pozwala uruchamiać skrypty bezpośrednio z linii poleceń
Matlaba, bez konieczności uruchamiania edytora i wczytywania do niego
M-pliku. Załóżmy, że chcemy wykonać skrypt zapisany w pliku silnia.m. W tym
celu wydajemy polecenie:
>> silnia
Jeżeli w katalogu roboczym nie ma pliku silnia.m otrzymamy następujący
komunikat:
>> silnia
??? Undefined function or variable 'silnia'.
Niezależnie od sposobu uruchomienia skrypt będzie wykonywany linijka po
linijce z pominięciem tych jego fragmentów, które poprzedzone są znakiem
procentu – fragmenty te stanowiące komentarz są wyróżnione kolorem zielonym.
7. M-pliki jako funkcje użytkownika
Funkcje są M-plikami, które mogą akceptować argumenty (dane wejściowe)
i w wyniku swojego działania zwracać wartości (dane wyjściowe).
Po zdefiniowaniu i zapisaniu jako M-pliku na dysku, funkcję można
wywoływać ze zwykłych skryptów.
PRz, KMK, 01’2005
str. 4/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
Przykład:
W Matlabie argumenty funkcji trygonometrycznych muszą być podawane w
radianach, więc zachodzi konieczność przeliczania kątów z miary stopniowej na
radiany.
Pierwsza linia (nie licząc komentarzy) M-pliku zawiera definicję składni
funkcji. Po słowie kluczowym
function
następuje określenie nazw
zmiennych, w których zostaną zapisane obliczone wartości funkcji – w
omawianym przykładzie jest to
[
R
]
. Następnie, po znaku = podana jest nazwa
funkcji wraz z argumentami czyli rad
(
D
)
. Kolejne linie M-pliku zawierają
polecenia służące do obliczenia wartości funkcji na podstawie znanych
argumentów.
% przeliczanie stopni [Deg] na radiany [Rad]
function
[
R
]
= rad
(
D
)
;
R = D *
(
pi/180
)
;
Nazwa funkcji, którą podano w pierwszej linii M-pliku musi być taka sama
jak nazwa pliku (nie licząc rozszerzenia
.m
). W naszym przykładzie poniższa
funkcja musi być zatem zapisana w pliku
rad.m
.
PRz, KMK, 01’2005
str. 5/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
Zadanie 1:
zaznaczyć w programie Acrobat Reader powyższe trzy linie z
przykładem definicji funkcji za pomocą narzędzia
,
skopiować,
utworzyć nowy M-plik o nazwie
rad.m
,
wkleić
zapisać
przetestować działanie funkcji rad pisząc w linii poleceń Matlaba:
>> rad(90)
>> rad(45)
>> rad(360)
wyniki porównać z:
>> pi/2
>> pi/4
>> 2*pi
PRz, KMK, 01’2005
str. 6/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
Zadanie 2:
otworzyć w edytorze skrypt
wykresy.m
dokonać zmian w skrypcie – zastąpić użyte przeliczenie kąta funkcją
rad()
zapisać dokonane zmiany – należy wybrać opcję
Save As...
, co
umożliwi podanie nowej nazwy – proszę dodać na końcu swoje
inicjały
uruchomić skrypt z poziomu linii poleceń Matlaba
Skrypt będzie wykonywany etapami dzięki wykorzystaniu polecenia
pause.
W kolejnych etapach wyświetlane będą wykresy od najprostszego w formie
do najbardziej złożonego. Kolejne warianty zastępują poprzednie do czasu użycia
polecenia figure.
Na ostatnim wykresie przedstawione są jednocześnie obie funkcje.
Zastosowano różne sposoby zilustrowania ich zmienności – linia oraz słupek.
PRz, KMK, 01’2005
str. 7/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
Zadanie 3:
Uzupełnij skrypt rysujący wykres momentów zginających dla belki
przedstawionej na Rys. 6.
Rys. 6 Schemat belki
W zadaniu należy posłużyć się skryptem
belka.m
znajdującym się w
katalogu
c:\moje dokumenty\matlab\podstawy informatyki
.
Po otwarciu skryptu należy uzupełnić go formułami obliczającymi szukane
wielkości według podanych wzorów (1).
R
A
=
b
L
P
R
B
=P−R
A
=
a
L
P
M
x=
{
R
A
⋅x
dla 0
xa
R
B
⋅ L−x
dla a
xL
(1)
PRz, KMK, 01’2005
str. 8/12
a
L
R
A
P
b
R
B
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
8. Odczyt danych z plików
Wczytanie danych z pliku dyskowego odbywa się przy przy użyciu
polecenia load.
Najczęściej stosuje się:
>> load nazwapliku
powodujące wczytanie wszystkich zmiennych zapisanych w bianrnym pliku
nazwapliku.mat
. Pliki o rozszerzeniu mat są efektem użycia polecenia save.
W przypadku gdy Matlab ma zostać użyty do przetworzenia danych
pochodzących przykładowo z pomiarów, to użytkownik będzie dysponował
najprawdopodobniej plikami tekstowymi o odpowiednio sformatowanej
zawartości. W najprostszym przypadku pliki takie można wczytać poleceniem:
>> load nazwapliku.txt
Przykład:
Należy wczytać plik binarny o nazwie
dane.mat
znajdujący się w katalogu
roboczym:
>> load dane
Sprawdzenie jakie macierze zostały wczytane jest możliwe przez polecenie
whos:
>> whos
W Command Window powinien pojawić się następujący komunikat:
Name Size Bytes Class
A 1x7 56 double array
B 1x7 56 double array
Jak widać w pliku
dane.mat
były zapisane dwie macierze jednowierszowe
A i B o siedmiu elementach.
Następnie należy wczytać plik tekstowy
dane.txt
:
>> load dane.txt
PRz, KMK, 01’2005
str. 9/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
Ponowne wyświetlenie informacji o zmiennych znajdujących się w pamięci
pokaże:
>> whos
Name Size Bytes Class
A 1x7 56 double array
B 1x7 56 double array
dane 2x7 112 double array
Ważne
– dane odczytane z pliku tekstowego zostaną umieszczone w
pamięci pod nazwą taką, jak nazwa pliku z którego były ładowane.
Wyświetlenie poszczególnych zmiennych jest bardzo proste – wystarczy
podać ich nazwy w Command Window, przykładowo:
>> dane
Możliwe jest wyświetlenie jednocześnie wszystkich trzech macierzy, gdyż
wszystkie one mają taką samą liczbę kolumn. W tym przypadku należy posłużyć
się następującą konstrukcją:
>> [ A; B; dane ]
Oddzielenie nazw poszczególnych macierzy średnikami spowoduje, że
macierze składowe staną się kolejnymi wierszami nowo-budowanej macierzy –
wyświetlone zostaną w kolejnych wierszach.
ans =
6.1000 10.3000 11.3000 12.3000 13.2000 14.2000 16.1000
61.3000 46.4000 46.4000 40.8000 31.6000 29.9000 22.0000
6.1000 10.3000 11.3000 12.3000 13.2000 14.2000 16.1000
61.3000 46.4000 46.4000 40.8000 31.6000 29.9000 22.0000
Jak widać w plikach
dane.mat
oraz
dane.txt
były zapisane te same zbiory.
Jednak w pliku binarnym
mat
mogły być zapisane dodatkowo nazwy
poszczególnych zmiennych.
Na koniec należy usunąć wszystkie zmienne z pamięci poleceniem:
>> clear all
PRz, KMK, 01’2005
str. 10/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
ZADANIE 4:
otworzyć w edytorze skrypt
wielomian.m
uzupełnić skrypt postępując zgodnie z informacjami zawartymi w
komentarzach
zapisać dokonane zmiany – należy wybrać opcję
Save As...
, co
umożliwi podanie nowej nazwy – proszę dodać na końcu swoje
inicjały
wykonać skrypt
PRz, KMK, 01’2005
str. 11/12
Podstawy Informatyki, Matlab – opis do ćwiczeń laboratoryjnych
9. Zapis wyników obliczeń do pliku
Zapis wyników obliczeń do pliku dyskowego odbywa się przy przy użyciu
polecenia save.
Przykład:
Przykładowe użycie tego polecenia:
>> save wielomian
Spowoduje zapisanie do pliku
wielomian.mat
wszystkich zmiennych
znajdujących się w pamięci. Przekonamy się o tym wydając następujące
polecenia:
>> whos
które spowoduje wyświetlanie nazw zmiennych oraz innych informacji o:
dane, dx, f, i, k, n, p, x, xn, y, yn.
Następnie za pomocą polecenia:
>> clear all
zostaną usunięta wszystkie zmienne z pamięci. Możemy przekonać się o
tym ponownie wydając polecenie whos.
Dużo częściej potrzebne jest zapisanie wybranych zmiennych.
Zanim to jednak będzie można wykonać należy załadować do pamięci to, co
zostało zapisane do pliku
wielomian.mat
.
Tym razem proszę posłużyć się poleceniem:
>> load wielomian x y f
Ponowne użycie polecenia whos pokaże, że w pamięci znajdują się tylko te
zmienne, które zostały wymienione po nazwie pliku
wielomian(.mat)
: x y f.
Zapis jednej spośród powyższych zmiennych zostanie zrealizowany
poleceniem:
>> save wspolczyniki f
gdzie
wspolczynniki(.mat)
to oczywiście nazwa pliku, do którego nastąpi
zapis.
PRz, KMK, 01’2005
str. 12/12