1
Pakiet programu MATLAB
Andrzej Tytko, prof. AGH
2
MATLAB – pakiet
MATLAB
(
MAT
rix
LAB
oratory)
Uniwersalny język programowania wysokiego poziomu, przeznaczony do
wykonywania obliczeń naukowo-inżynierskich w takich dziedzinach jak
automatyka, elektronika, elektrotechnika. Integruje obliczenia, wizualizację i
programowanie w środowisko, w którym stawia się problemy i otrzymuje
rozwiązania wyrażane w znanej notacji matematycznej.
Program powstał w wersji komercyjnej w 1987 roku.
Producentem jest firma The Math Works, Inc. z Nattic, Massachiussets,
USA.
http://www.mathworks.com/
System MATLAB składa się z następujących głównych części:
język MATLAB,
środowisko pracy w MATLAB,
biblioteka funkcji graficznych,
biblioteka funkcji matematycznych
,
interfejs programowy do komunikacji z innymi językami (C++, Fortran)
dodatkowe programy (MATLAB Extensions: Applix Link, Excel Link, MATLAB Compiler,
MATLAB C++, Math Library)
biblioteki dodatkowe (MATLAB Toolboxes),
nakładka Simulink
stanowiąca wygodny, interaktywny interfejs graficzny do
projektowania i badania ciągłych, dyskretnych i mieszanych układów regulacji i
sterowania. Z nakładką Simulink mogą współpracować dodatkowe elementy: Real
Time
3
MATLAB – możliwości
•Math and computation (obliczenia matematyczne)
•Algorithm development (tworzenie algorytmów)
•Data acquisition (zbieranie danych)
•Data analysis, exploration, and visualization (analiza danych,
przetwarzanie, wizualizacja)
•Modeling, simulation, and prototyping (Modelowanie, symulacja,
prototypowanie)
•Scientific and engineering graphics (Rysowanie inżynierskie i naukowe)
•Application development, including graphical user interface building
(Budowa aplikacji w tym GUI – interfejsu graficznego użytkownika)
4
MATLAB – literatura
Brzóska j., Dobroczyński L.: Programowanie w Matlab. Wyd. MIKOM,
Warszawa 1998
Mrozek B., Mrozek Z.: Uniwersalne środowisko do obliczeń naukowo-
technicznych, Wyd. PLJ, Warszawa 1996
Mrozek B., Mrozek Z.: Uniwersalne środowisko do obliczeń naukowo-
technicznych. Poradnik użytkownika, Wyd. HELION, Gliwice 2004
Matworks Inc.: MATLAB, The Language of Technical Computing. Release
Notes for Release 13
Kowalska A., Pińczyk B.: Matlab. Przykłady i zadania. Wyd. MIKOM,
Warszawa 2002
Regel W.: Wykresy i obiekty graficzne w programie Matlab. MIKOM,
Warszawa 2003
Regel W.: Obliczenia numeryczne i symboliczne w programie Matlab.
MIKOM, Warszawa 2004
Regel W.: Przykłady i wiczenia w programie SIMULINK. MIKOM, Warszawa
2004
Regel W.: Statystyka matematyczna w programie Matlab. MIKOM, Warszawa
2003
Osowski S., Cichocki A., Siwek K.: MATLAB w zastosowaniu do obliczeń
obwodowych i przetwarzania sygnałów. Oficyna Wydawnicza Pol.
Warszawskiej. Warszawa 2006
Protap R.: MATLAB 7 dla naukowców i inżynierów. Wyd. Naukowe PWM
MIKOM, Warszawa 2007
T. Zieliński: Cyfrowe przetwarzanie sygnałów. WKŁ, Warszawa 2005
5
MATLAB – zalety pakietu
Najważniejsze zalety MATLAB:
•Macierz jako podstawowy typ danych (nie ma potrzeby deklarowania
wymiaru)
•Funkcje matematyczne mają oczywistą składnię,
•Jednakowy typ danych (macierz) we wszystkich składnikach
oprogramowania,
•Programy składane są z elementarnych jednostek,
•Korzystanie z bibliotek zawierających gotowe procedury rozwiązujące
problem,
•Wymiana danych między aplikacjami MS Windows (dane mogą być
przesyłane do Excela),
•Możliwość przenoszenia M-plików na różne komputery (M-pliki to pliki
ASCII),
•M-pliki mogą być edytowane za pomocą dowolnych edytorów
tekstowych,
•Możliwość przenoszenia danych za pomocą MAT-plików (MAT-pliki są
plikami binarnymi tworzonymi poleceniem save MATLAB),
•MAT-pliki są standardową postacią zapisu danych liczbowych w MATLAB
(są zależne od sprzętu, ale mogą być przenoszone pomiędzy różnymi
komputerami, gdyż w nagłówku pliku zapisany jest jego typ,
•Program znany w środowiskach akademickich na całym świecie,
•Możliwość rozwiązania prawie wszystkich problemów możliwych do
zapisania matematycznego
•Otwartość i łatwość w przekształcaniu M-plików,
•„Debugger” wbudowany w edytor MATLAB,
•Gotowe programy typu „kliknij” i oblicz,
•Rysunki mają postać wektorową
6
MATLAB – „wady” pakietu
Najważniejsze „wady” MATLAB:
•Konieczność znajomości zasad rachunku wektorowego i macierzowego,
•Znajomość funkcji i rozumienie przekształceń matematycznych,
•Konieczna znajomość języka MATLAB (składnia i gramatyka),
•Wiele zmiennych – zalecane proste i czytelne nazwy np. dane_moc
•MATLAB nie preferuje instrukcji w pętli: for, if, then na rzecz notacji
dwukropkowej
•Konieczność opisywania fragmentów M-plików w celu zapamiętania ich
działania,
•Pliki skryptowe w ostateczności, raczej pliki funkcyjne,
•Przy przenoszeniu danych za pomocą binarnych MAT-plików należy
pamiętać o notacji kropkowej dla liczb dziesiętnych,
•Przy przenoszeniu danych za pomocą EXCEL należy pamiętać o
wyczyszczeniu komórek i zapisie tablicowym oraz o zastąpieniu przecinka
w liczbach dziesiętnych kropką,
7
MATLAB – „wady” pakietu
Najważniejsze „wady” MATLAB:
•Przy modyfikowaniu M-plików należy pamiętać aby nadać im nowe nazwy
i umieścić we właściwym katalogu,
•Polecana jest praca nad danym problemem w oddzielnym katalogu,
•Możliwości graficzne MATLAB są ograniczone w porównaniu z innymi
aplikacjami,
•Występują klasyczne problemy z dzieleniem przez 0 i z bardzo dużymi i
bardzo małymi liczbami,
•Wiele użytecznych procedur znajduje się w dodatkowych Toolbox
•Przy edytowaniu plików łatwo pomylić: ( ) z [ ]; , z ; ‘ ’ z ich brakiem
8
MATLAB – Toolboxes (ver. 6.5)
Communications Toolbox
Instrument Control Toolbox, Control System Toolbox,
System Identification Toolbox (ARIMA)
Database Toolbox
Neural Network Toolbox, Wavelet Toolbox (DWT), Fuzzy Logic Toolbox
Data Acquisition Toolbox,
Signal Processing Toolbox
, Filter Design Toolbox
Optimization Toolbox, System Identification Toolbox
Curve Fitting Toolbox, Spline Toolbox,
Datafeed Toolbox
Financial Derivatives Toolbox, Financial Toolbox, Financial Time Series
Toolbox
Statistics Toolbox
Symbolic Math Toolbox (MAPLE)
Virtual Reality Toolbox
Image Processing Toolbox
Partial Differential Equation Tool (MES)
9
MATLAB and Simulink (ver 6.5)
SIMULINK
Simulink
SimMechanics
SimPowerSystems
Real-Time Workshop
Stateflow
MATLAB
MATLAB
MATLAB Link for Code Composer
Studio™ Development Tools
MATLAB COM Builder
MATLAB Report Generator
MATLAB Compiler
MATLAB Web Server
MATLAB Excel Builder
10
MATLAB – ekran z 5 okienkami
11
MATLAB – ekran optymalny
12
MATLAB – edytor tekstowy
13
MATLAB – zmienne
Zmienne:
x = 1
alfa=0.05
liczba_studentów = 25
A=[1,2,3]
(wiersz)
B=[1 2 3]
(wiersz)
C=[1;2;3]
(kolumna)
D-[A;B]
siano=1:0.01:100
kopa=60*siano
grupa=('MSE')
14
MATLAB – zapis liczb
Zapisy liczb:
3
-99
0.0001
9.6397238
1.60210e-20
6.02252e23
1i
-3.14159j
3e5i
1+2i
2*pi
15
MATLAB – formaty liczb
Liczby mogą być prezentowane w następujących formatach:
format (domyślny, identyczny z short)
format short (reprezentacja stałoprzecinkowa pięciocyfrowa)
format long (reprezentacja stałoprzecinkowa piętnastocyfrowa)
format short e (reprezentacja zmiennoprzecinkowa pięciocyfrowa)
format long e (reprezentacja zmiennoprzecinkowa piętnastocyfrowa)
format short g (najlepsza stałoprzecinkowa lub zmiennoprzecinkowa
reprezentacja pięciocyfrowa)
format long g (stałoprzecinkowa lub zmiennoprzecinkowa reprezentacja
piętnastocyfrowa)
format hex (
szesnastkowe wyświetlanie zawartości komórek pamięci
zawierających daną liczbę)
format rat (przedstawia ułamki dziesiętne za pomocą ilorazu małych liczb
całkowitych)
format compact (wyłącza wyświetlanie pustych wierszy)
format loose (włącza wyświetlanie pustych wierszy)
format + (wypisuje plusy lub minusy w ciągu liczbowym)
format bank (podaje liczby w układzie zł.gr – 10.21
UWAGA: format wyświetlanych liczb można ustalić z menu File i Preferences
16
MATLAB – wyrażenia matematyczne
Wyrażenia:
Dane: A, B, C,
x = A; y = B; z = C;
Argumenty: x, y, z,
ans = wyrażenie(x,y,z)
17
MATLAB – funkcje matematyczne
Funkcje:
Dane: A, B, C,
x = A; y = B; z = C
Argumenty: x, y, z,
y =funkcja(x,y,z)
Funkcje MATLABa:
y=sin(x)
y=ln10(x)
18
MATLAB – podstawowe operatory
Działanie/Oper
ator
Operator
Działanie
+
Addition
Ddodawanie
-
Subtraction
Odejmowanie
*
Multiplication
Mnożenie tablicow
.*
Multiplicationn (Mx)
Mnożenie macierzowe
/
Division
Dzielenie tablicowe
./
Division (Mx)
Dzielenie macierzowe
\
Left division
Dzielenie od lewej
strony
^
Power
(Complex conjugate
transpose)
Potęgowanie tablicowe
.^
Power
(Complex conjugate
transpose)
Protegowanie
macierzowe
=
Equal
Znak równości
( )
Brackets
Specify evaluation order
Nawiasy
Kolejność obliczeń
19
MATLAB – stałe
Constant /
Stała
Constant
Stała
pi
3.14159265….
Ludolfina
i
Imaginary unit, (-1)
1/2
Liczba urojona
j
Same as I
Liczba urojona
eps
Floating-point relative
precision: 2
-52
Precyzja liczb
zmiennoprzecinkowych
realmin
Smallest floating-point
number, 2
-1022
Najmniejsza liczna
zmiennoprzecinkowa
realmax
Largest floating-point
number, (2-)
21023
Najmniejsza liczna
zmiennoprzecinkowa
inf
Infinity
nieskończoność
NaN
Not-a-number
Brak wartości (rzadkie
macierze)
e
2,73…
Stała Eulera, tylko w
równaniach i opisach
20
MATLAB – wyrażenia matematyczne
podstawowe
Funkcja
Opis
norm
Matrix or vector normalization
normest
Estimate the matrix 2-norm
rank
Matrix rank
det
Determinanta
trace
Suma elementów
orth
Ortogonizacja
inv
Obracanie macierzy
eig
Wektory własne
poly
Wielomian charakterystyczne
svd
Singular value decomposition
21
MATLAB – wyrażenia matematyczne dla
macierzy
Funkcja
Opis
norm
Matrix or vector normalization
normest
Estimate the matrix 2-norm
rank
Matrix rank
det
Determinanta
trace
Suma elementów
orth
Ortogonizacja
inv
Obracanie macierzy
eig
Wektory własne
poly
Wielomian charakterystyczne
svd
Singular value decomposition
22
MATLAB – niektóre wyrażenia matematyczne
!tree
struktura drzewa katalogowego
%
po tym znaku komentarz
,
separacja indeksów, argumentów funkcji
....
kontynuacja linii
A
macierz
;
koniec wiersza
[ ]
tworzenie macierzy
I
macierz jednostkowa
=
znak równości
<
znak mniejszości
<=
znak słabej mniejszości
>
Znak większości
>=
znak słabej większości
abs
wartość bezwzględna
angle
kąt
ans
wynik
any
logiczna prawda
atan
arcustangens
23
MATLAB – wyrażenia (1)
Polecenie / symbol
Definicja
!tree
struktura drzewa katalogowego
%
po tym znaku komentarz
,
separacja indeksów, argumentów
funkcji
....
kontynuacja linii
A
macierz
;
koniec wiersza
[ ]
tworzenie macierzy
I
macierz jednostkowa
=
znak równości
<
znak mniejszości
<=
znak słabej mniejszości
>
znak
>=
znak słabej większości
abs
wartość bezwzględna
angle
kąt
ans
wynik
any
logiczna prawda
24
MATLAB – wyrażenia (2)
axis, axes
oś, osie
bar
wykres słupkowy
box
wykres pudełkowy
break
przerwanie pętli
case .. otherwise
zmienna przełączająca
char
zmienna tablicowa
cla
usuwa obiekty
clc
czyści okno
clear
usuwa zmienne
clf
czyści figurę
close
zamknięcie okna graficznego
conj
liczby zesp. sprzężone
contour
wykres konturowy
conv
splot (mnożenie wielomianów)
corrcoef
współ. korelacji
cos
cosinus
cov
macierz kowariancji
cumsum
suma kumulacyjna
25
MATLAB – wyrażenia (3)
deconv
wektory współczynników
wielomianów
delete
usuń
det
wyznacznik
diag
diagonalna
dif
różniczka
dir
ścieżka dostępu
eig
wektor własny
erf
funkcja błędu
error
błąd
exp
funkcja wykładnicza
ezplot
wykres funkcji w przedziale
feval
wykres funkcji określonej łańcuchem
figure
okno wykresu
fopen, fclose
otwarcie i zamknięcie pliku
for.. end
pętla
format
format zmiennych
26
MATLAB – wyrażenia (5)
fplot
wykres funkcji
gamma
funkcja gamma
gca
identyfikator okna współrzędnych
gcf
identyfikator okna
get
odczyt wartości okna
ginput
wartości współrzędnych
global
zmienna globalna
gradient
gradient
grid, grid of, grid
on
siatka, usuwanie
gtext
wprowadza tekst na rysunek
help
pomoc
hidden of, hidden
on
ukrywania
hist
histogram
hold, hold of, hold
on
podtrzymanie rysunku
home
ustawienie kursora na ekranie
if ...elseif end
skok warunkowy
27
MATLAB – wyrażenia (6)
input
wprowadzenie tekstu
int2str
zmiana stałej na nazwę
interpl
interpolacja 1
interp2
interpolacja 2
isempty
0 gdy macierz pusta
legend
legenda
length
długość wektora
load
wprowadzić zmienną
log
logarytm naturalny
lgoglog
skala dwulogarytmiczna
mat2str
konwersja macierzy do łańcucha
max
maksymalna wartość
mean
średnia
median
mediana
mesh
siatka 3D
min
wartość minimalna
28
MATLAB – wyrażenia (7)
nargin
wywoływanie funkcji z różną liczbą
argumentów
norm
norma macierzy/wektora
num2str
konwersja macierzy na ciąg nazw
ode23, ode45
dwie metody Rungego Kutty
patch
wypełnianie wielokątów
path
ścieżka
pause
przerwa
permute
permutacja indeksów tablicy
plot,
plot(x,y,'typ'),plot(x,y,xl,y
l), plot3
wykres
poly, polyeig
wielomiany
polyfit, polyval
dopasowywanie wielomianów
prod
wyznacznik macierzy
29
MATLAB – wyrażenia (8)
input
wprowadzenie tekstu
int2str
zmiana stałej na nazwe
interpl
interpolacja 1
interp2
interpolacja 2
isempty
0 gdy macierz pusta
legend
legenda
length
długość wektora
load
wprowadzić zmienną
log
logarytm naturalny
lgoglog
skala dwulogarytmiczna
mat2str
konwersja macierzy do łańcucha
max
maksymalna wartość
mean
średnia
median
mediana
mesh
siatka 3D
min
wartość minimalna
nargin
wywoływanie funkcji z różną liczbą
argumentów
30
MATLAB – wyrażenia (9)
normx
norma macierzy/wektora
num2str
konwersja macierzy na ciąg nazw
ode23, ode45
dwie metody Rungego Kutty
patch
wypełnianie wielokątów
path
ścieżka
pause
przerwa
permute
permutacja indeksów tablicy
plot,
plot(x,y,'typ'),plot(x,y
,xl,yl), plot3
wykres
poly, polyeig
wielomiany
polyfit, polyval
dopasowywanie wielomianów
prod
wyznacznik macierzy
31
MATLAB – wyrażenia (10)
rand
losowa generacja uniform
randn
losowa generacja normalna
rank
rząd macierzy
real
część rzeczywista
realmax, realmin
maks lub min części
rzeczywistej
roots
pierwiastki wielomianu
round
zaokrąglenie
save
zapisz Mat-plik
semilogx, semilogy,
współrzędne logarytmiczne
sin
sinus
size
rozmiar macierzy/wektora
sparse
macierz rzadka
sqrt
pierwiastek
std
odchylenie kwadratowe
str2mat
konwersja nazwy do zmiennej
subplot(211)
jeden z 2 rysunków na wykresie
32
MATLAB – wyrażenia (11)
sum
suma
surf
oznaczenie powierzchni
surface
obiekt powierzchnia
switch
przełączanie na case
text
opis tekstowy
title
tytuł rysunku
uicontrol, uimenu
przyciski rysunku
varargin, varargout
funkcja wielu argumentów
wejściowych
view
ustawianie rysunku 3D
waterfall
rodzaj rysunku 3D
which
ścieżka do pliku
while .. end
pętla warunkowa
who
nazwy plików
whos
nazwy i parametry plików
xlabel, ylabel, zlabel
opisy osi
zeros
macierz zerowa
zoom
powiekszenie
33
MATLAB – pliki skryptowe i funkcyjne
M-files can be either scripts or functions.
M-pliki są skryptami lub funkcjami
Scripts are simply files containing a sequence of MATLAB statements.
Skrypty to pliki zawierające sekwencje wyrażeń w języku MATLAB.
Pracują w oparciu o zmienne globalne
Functions make use of their own local variables and accept input
arguments.
Funkcje używają swoje lokalne zamienne i akceptują argumenty
wejściowe. W przypadku gdy zmienna ma być globalne należy to
zadeklarować przez:
global x
34
MATLAB – pliki skryptowe przykłady
sinc : najprostsza postać funkcji sin(x)/x (zapis błędny)
sinc0: poprawna postać funkcji sin(x)/x i jej wykres
sinc1: postać funkcji sin(x)/x i jej wykres funkcją comet
sinc2: postać funkcji sin(x)/x i jej wykresy przy pomocy funkcji
subplot
35
MATLAB – pliki skryptowe i funkcyjne
M-files can be either scripts or functions.
M-pliki są skryptami lub funkcjami
Scripts are simply files containing a sequence of MATLAB statements.
Skrypty to pliki zawierające sekwencje wyrażeń w języku MATLAB.
Pracują w oparciu o zmienne globalne
Functions make use of their own local variables and accept input
arguments.
Funkcje używają swoje lokalne zamienne i akceptują argumenty
wejściowe. W przypadku gdy zmienna ma być globalne należy to
zadeklarować przez:
global x
36
M_plik (plik funkcyjny: CIRCLEFN )
function [x,y] = circlefn(r)
% CIRCLEFN - skrypt rysujący okrąg o promieniu r (HELP)
% Plik napisany przez R. Pratap 9.14.94
% Ostatnia modyfikacja 9.01.98
% Składnia wywołania: [x,y] = circlefn(r) lub circlefn(r)
% Wyniki: [x,y] współrzędne punktów x i y
%------------------------------------------------------------------------------------------
theta = linspace(0,2*pi,100);
% tworzy wektor
100 kątów theta
x = r*cos(theta);
% położenie punktu
x
y = r*sin(theta);
% położenie punktu
y
plot(x,y);
% rysowanie okręgu
axis('equal');
% deklarowanie równych
osi
title(['okrąg o promieniu r = ',num2str(r)]); % tytuł rysunku
37
M_plik (plik HELP: CIRCLEFN )
View code for circlefn Default Topics
circlefn - skrypt rysujący okrąg o promieniu r
Plik napisany przez R. Pratap 9.14.94
Ostatnia modyfikacja 9.01.98
Składnia wywołania: [x,y] = circlefn(r) lub circlefn(r)
Wyniki: [x,y] współrzędne punktów x i y
------------------------------------------------------------------------------------------------------
--
38
MATLAB – M_plik (plik funkcyjny)
Wyjaśnienie pojęć:
function –
słowo kluczowe
[mi,si,n,d) –
argumenty wyjściowe
statystyka –
nazwa funkcji
(x) –
wektor danych wejściowych
Plik funkcyjny nazwa: statystyka
function [mi,si,n,d] = statystyka(x)
n = length(x);
d = max(x) - min(x);
mi = sum(x)/n;
si = sqrt(sum((x-mi).^2/n));
Składnia:
[mi,si,n,d] = statystyka(x)
39
MATLAB – M_plik skryptowy i funkcyjny:
funkcja_comet
Plik funkcyjny:
1. %wykres funkcji używającej sin(t)/t
2. %nazwa pliku: funkcja_comet
3. function funkcja_comet;
4. global t;
5. t=-1:0.011:19;
6. y=-sin(t)./t;
7. x=-cos(t);
8. figure
9. comet(x,y)
Plik skryptowy:
1. t=-1:0.011:19;
2. y=-sin(t)./t;
3. x=-cos(t);
4. figure
5. comet(x,y)