background image

© Zbigniew Rudnicki (dr inż)

MATLAB -

podstawy

użytkowania

MATLAB

(MAT

rix

 LAB

oratory

)

- pakiet oprogramowania matematycznego firmy

MathWorks Inc. (od roku 1984)

to

język i środowisko programowania

do obliczeń naukowo-technicznych

oraz

obszerny zestaw tematycznych

bibliotek podprogramów (toolbox’ów)

i wiele tysięcy stron

podręczników

background image

Dlaczego warto poznać MATLABa?

Bo :

• jest powszechnie nauczany na  uczelniach Świata

• jest łatwy (jak BASIC a nie jak C czy C++)

• staje się najczęściej używanym narzędziem

badaniach naukowych (

 publikacje)

• posiada bardzo obszerną i przystępnie napisaną

dokumentację, oraz przykłady i system pomocy

• specjalistyczne „toolbox’y” czynią go narzędziem

dostosowanym do prawie każdej dziedziny

• pozwala poznawać metody matematyczne w praktyce

• pozwala tworzyć wykresy, animacje, aplikacje, ...

• jest stale rozwijany i wzbogacany

Literatura po polsku:

• A.Kamińska, B.Pańczyk: „Matlab - przykłady i zadania”

- wyd. Mikom 2002, z serii „ćwiczenia z...” (150 stron)

• J.Brzózka, L.Dorobczyński: „Programowane w Matlab”

wyd.Mikom 1998. (314 stron)

• B.Mrozek, Zb.Mrozek: „MATLAB 5.x, Simulink 2.x”.

wyd. PLJ 1998

• B.Mrozek, Zb.Mrozek: „MATLAB uniwersalne

ś

rodowisko obliczeń naukowo-technicznych”. PLJ 1996

• Z.Wróbel, R.Koprowski: „Przetwarzanie obrazu w

programie MATLAB”. Wyd. Uniw. Śl., K-ce 2001

background image

Interaktywne środowisko Matlab’a:

Okno

KOMEND 

i wyników 

(dialogu)

Bieżący

folder

Pomoc

(podręczniki)

Historia

(poprzednie

komendy)

Niektóre cechy MATLABa 

(wersja 6)

• Przyjazne dla użytkownika, interakcyjne środowisko

• Język programowania wysokiego poziomu

• Zbiór (ok.30) toolbox’ów - zestawów procedur i funkcji

• Zbiór podręczników (ok.70 x kilkaset stron, 433MB)

• MATLAB umożliwia m.in:

– wykonywanie obliczeń naukowych i inżynierskich,

– modelowanie i symulację,

– analizę danych (w tym: sygnałów i obrazów)

– graficzną wizualizację danych i wyników obliczeń.

• Podstawowym typem danych w MATLABie jest tablica

(macierz) o elementach rzeczywistych lub zespolonych.

background image

Typy i nazwy zmiennych

 Wszystkie zmienne w MATLABie sa traktowane

jak macierze

Wektory i skalary są szczególnymi przypadkami

macierzy

Nazwy zmiennych rozpoczynają się od litery, a

po niej mogą być litery, cyfry i znaki podkreślenia

 Pamiętanych jest 19 pierwszych znaków

Nazwy i deklarowanie zmiennych

• MATLAB rozróżnia duże i małe litery

– polecenia standardowe należy pisać

małymi literami

– dla nazw własnych programów i zmiennych

można używać małych i dużych liter

• Deklarowanie typu i wymiarów macierzy

odbywa się automatycznie - przez
rozpoznanie rodzaju wpisanych wartości
oraz maksymalnych wskaźników

background image

Łagodny start - kalkulator

Znak gotowości do przyjmowania komend:

>>

Wpisanie w oknie komend 2+3 daje wynik:

>> 

2+3

ans =

     5

>>

Nie wstawiliśmy wyniku do żadnej zmiennej

dlatego MATLAB użył zmiennej „ans”

Obliczenia kalkulatorowe c.d.

Możemy wyniki obliczeń podstawiać do zmiennych np.:

>> 

x=sin(pi/2)

x =

     1

>>

Komenda zakończona średnikiem wykona

się lecz nie będzie wyświetlony jej wynik:

>> 

x=sin(pi/2);

>>

background image

Jakie funkcje mamy do dyspozycji

- pokaże HELP

Funkcje według kategorii

background image

Alfabetyczny wykaz funkcji

Ważniejsze elementarne funkcje matematyczne

abs - wartość bezwzględna

funkcje trygonometryczne, hiperboliczne i odwrotne

ceil - zaokrąglenie w górę

exp - e do x

fix - zaokrągla w stronę zera

floor - zaokrągla w dół

gcd - największy wspólny podzielnik

imag - część urojona

lcm - najmniejsza wspólna wielokrotność

log - logarytm naturalny

log2 - logarytm o podstawie 2

log10 - logarytm o podst 10

mod - reszta z dzielenia

round - zaokrągla do najbliższej całkowitej

sign - znak

sqrt- pierwiastek

background image

Ciągi i wektory

Przykłady definiowania ciągów:

>> 

i=1:6

i =     1     2     3     4     5     6

_____________________________

>> 

a(i)=(i-1)/2

a =    0    0.5    1.0    1.5    2.0    2.5

____________________________

>> 

x=-0.2:0.1:0.3

x =   -0.2   -0.1    0    0.1    0.2    0.3

____________________________

>> 

v=[12.1, -3.2, 0.03, 44.4]

v =   12.1000   -3.2000    0.0300   44.4000

Macierze

>> 

A=[4,1,5; 2,3,6]

A =
     4     1     5
     2     3     6

Dwukropek zastępuje wszystkie wartości wskaźnika

A więc pierwszy wiersz macierzy to:

>> 

A(1,: )

ans =      4     1     5

Podobnie aby wybrać trzecią kolumnę wpisujemy:

>> 

A(:,3)

ans =
      5
      6

>> 

A(2,2)

ans =     3

background image

Operacje na macierzach czy na ich elementach?

Wpisanie x=0 : 0.1 : 0.5 daje macierz wierszową:

>>

 

x=0 : 0.1 : 0.5

x =    0    0.1000    0.2000    0.3000    0.4000    0.5000

Operatory bez kropki to działania macierzowe a mnożenie dwu

macierzy to mnożenie wierszy przez kolumny a więc nie można:

>>

 

y=x^2

??? Error using ==> ^      Matrix must be square.

ani nie da się:

>>

 

y=x*x

??? Error using ==> *   Inner matrix dimensions must agree.

natomiast trzeba użyć działania na elementach czyli operatora z

kropką:

>>

 

y=x .* x

y =        0    0.0100    0.0400    0.0900    0.1600    0.2500

Jak otrzymać wykres funkcji

>> 

x=0:0.1:4*pi;

>> 

plot(x,sin(x));

>> 

grid on

background image

Wykres powierzchni trójwymiarowej

>> [x,y]=meshgrid(-3*pi:0.1:3*pi,-3*pi:0.1:3*pi);

>> z=600-x.*y+50*sin(x)+50*sin(y);

>> mesh(x,y,z)

Programy czyli ”m-pliki”: skrypty i funkcje

Programy (wieloliniowe) można pisać w edytorze

MATLABa lub w Notatniku

Zapisywane są do plików z rozszerzeniem 

*.m

Uruchamiane są przez wpisanie nazwy pliku (bez

rozszerzenia  „ 

.m

 ” w oknie komend

Rozróżniamy:

• skrypty

 - operujące na zmiennych przestrzeni

roboczej Matlaba

• funkcje

 - posiadające zmienne lokalne

background image

Przykład m-pliku skryptowego

% po znaku procentu są tzw. komentarze
% program rozwiazywania równania kwadratowego

a=input('a=');   b=input('b=');    c=input('c=');
delta = b*b-4*a*c;

if delta<0

disp('Brak pierwiastkow rzeczywistych');

else

x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a);
disp('x1='); disp(x1); disp('x2='); disp(x2);

end

To samo napisane jako funkcja prkw(a, b, c):

function [x1, x2] = prkw(a, b, c)

% ta funkcja oblicza pierwiastki x1, x2
% rownania: a*x^2 + b*x + c = 0

delta = b*b-4*a*c;

if delta<0

% dla delta<0 podstawimy NaN = "nieokreslone"

x1=NaN;    x2=NaN

else

x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);

end

background image

Tematyka toolbox-ów Matlaba

SIMULINK - Symulacja układów

dynamicznych

Układy Sterowania

Przetwarzanie i analiza Sygnałów

Przetwarzanie i analiza Obrazów

Sieci Neuronowe;

Logika rozmyta

Statystyka;

Finanse i giełda

Akwizycja danych

Projektowanie filtrów

Bazy danych

Matematyka symboliczna

Identyfikacja systemów

Analiza falkowa i Fourier'a

Optymalizacja

Równania różniczkowe

Sterowanie nieliniowe

Sterowanie predykcyjne

Analiza chemiczna

Geografia i mapy

Funkcje sklejane (splajny)

Metoda elem. skończonych

Teoria grafów

. . . . . . . .