Matlab

język wysokiego poziomu do obliczeń numerycznych, wizualizacji i tworzenia aplikacji

interaktywne środowisko do eksploracji, projektowania i rozwiązywania problemów

obszerna biblioteka funkcji matematycznych dla algebry liniowej, statystyki, analizy Fouriera, filtrowania, optymalizacji, całkowania numerycznego i rozwiązywania zwykłych równań różniczkowych

wizualizacja danych

narzędzia programistyczne: edytor, debbuger, profiler, …

narzędzia do tworzenia aplikacji z interfejsami graficznymi

integracja algorytmów z zewnętrznymi aplikacjami (np. MS Excel) i językami (C, Java, .NET, …)

ToolBox-y

Środowisko graficzne

Current Folder - katalog bieżący

Command Window - linia komend

Workspace - podgląd zmiennych i danych w projekcie

Command History - historia komend

Matlab jako kalkulator

Operacje arytmetyczne + dodawnie, - odejmowanie, * mnożenie, / dzielenie, ^ potęgowanie

5 + 5

ans = 10

-2 * 4.3

ans = -8.6000

2 ^ 10

ans = 1024

3 / 5

ans = 0.60000

3 / 0

warning: division by zero
ans = Inf

Ćwiczenie: oblicz ile wynoisi

Funkcje matematyczne

Stałe: pi , inf , NaN not a number, realmax największa liczba, rzeczywista, eps dokładność maszynowa

Funkcje: sin(), cos(), tan, cot, sinh, asin, sqrt() , exp() , abs , log, log2, log10, sign znak, mod reszta z dzielenia

sin( pi / 4 )

ans = 0.70711

realmax
eps

ans = 1.7977e+308
ans = 2.2204e-16

sqrt(16)

ans = 4

sqrt(-1)

ans = 0 + 1i

Ćwiczenie: oblicz ile wynosi

Wyjście poleceń

średnik na końcu instrukcji (;) wyłacza wyjście

disp() wypisywanie zmiennych

fprintf() wypisywanie formatowanych komunikatów zgodnie z funkcją printf z C

sin(5) + 3;

disp(sin(5) + 3);
disp('Witaj świecie')

2.0411
Witaj świecie

fprintf('Witaj ściecie!\n')
fprintf('sin(%d) = %f\n', 2, sin(2))

Witaj ściecie!
sin(2) = 0.909297

Formatowanie printf:

liczby rzeczywiste: %f, %e notacja naukowa, %g krótka format

%.3f precyzja

%10f szerokośc okna

%-10f wyrówanie do lewej

%d liczby całkowite

%x liczby całkowite (szesnastkowo)

%s napis (ciąg znaków)

%c znak

fprintf('%f\n', pi)
fprintf('%e\n', pi)
fprintf('%g\n', pi)
fprintf('%.10f\n', pi)
fprintf('%10f\n', pi)
fprintf('%10.2f\n', pi)
fprintf('%-10.2f\n', pi)
fprintf('%d %x %c\n', 42, 42, 42)
fprintf('Liczba %s wynosi %f', 'pi', pi)

3.141593
3.141593e+00
3.14159
3.1415926536
3.141593
3.14
3.14
42 2a *
Liczba pi wynosi 3.141593

Zmienne

definicja i inicjalizacja zmiennych

operator = przypisania wartości <br> zmienna = wyrażenie

nazwy zmiennych A-Za-z0-9_, małe/wielkie litery rozróżniane

x = 16
y = sqrt(x)
z = x + y + sin(x)
napis = 'Witaj Świecie'

x = 16
y = 4
z = 19.712
napis = Witaj Świecie

x = x + 1

x = 17

błędne przypisanie

1 = x

parse error:
invalid constant left hand side of assignment
>>> 1 = x
^

who - lista zmiennych

whos - lista zmiennych wraz informacją o typie

clear - usuwanie zmiennych

who

Variables in the current scope:
ans napis x y z

whos

Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
ans 1x1 8 double
napis 1x14 14 char
x 1x1 8 double
y 1x1 8 double
z 1x1 8 double
Total is 18 elements using 46 bytes

zmienne są macierzami, liczby to macierze 1×1

napisy są wektorem znaków (char) 1xN

Zmienna ans

zmienna ans przechowuje ostatni wynik (answer)

sqrt(2)

ans = 1.4142

x = ans + 5

x = 6.4142

Typy danych

typ double domyślny dla warlości liczbowych

typ logiczny logical, wartości: true, false

typ znakowy char, napis to macierz (wektor) znaków

typ całkowity int32 po rzutowaniu int32()

x = 1;
y = true;
z = int32(x);
d = 'abc';
whos

Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
ans 1x1 8 double
d 1x3 3 char
napis 1x14 14 char
x 1x1 8 double
y 1x1 1 logical
z 1x1 4 int32
Total is 21 elements using 38 bytes

Wektory

x = [ 1 2 3]

x =
1 2 3

x = [ 1, 2, 3]

x =
1 2 3

x = 1:10

x =
1 2 3 4 5 6 7 8 9 10

y = [ 1 ; 2 ; 3 ; 4]

y =
1
2
3
4

Operacje na wektorach

x = [1 2 3 4 5]
x + 2

x =
1 2 3 4 5
ans =
3 4 5 6 7

sqrt(x)

ans =
1.0000 1.4142 1.7321 2.0000 2.2361

y = [6 7 8 9 10]
z = x + y
sqrt(x)

y =
6 7 8 9 10
z =
7 9 11 13 15
ans =
1.0000 1.4142 1.7321 2.0000 2.2361

Ćwiczenie: oblicz wartość wyrażenia

Komendy wbudowane

clc czyszczenie wiersza poleceń

who whos lista zmiennych

clear usuwa wszystkie zmienne

clear x usuwa zmienną x

help polecenie pomoc

quit wyjście z Matlab

help sin

'sin' is a built-in function from the file libinterp/corefcn/mappers.cc
-- sin (X)
Compute the sine for each element of X in radians.
See also: asin, sind, sinh.
Additional help for built-in functions and operators is
available in the online version of the manual. Use the command
'doc <topic>' to search the manual index.
Help and information about Octave is also available on the WWW
at https://www.octave.org and via the help@octave.org
mailing list.

Pomoc

help polecenie pomoc dotycząca polecenia

help elfun elementarne funkcje matematyczne

help elmat elementarne funkcje macierzowe

doc polecenie strona dokumentacji dotycząca polecenia

lookfor wyrażenie lista poleceń dotyczacych wyrażenia

F1pomoc dotycząca zaznacznej funkcji

lookfor cosine

acos Compute the inverse cosine in radians for each element of X
.
acosh Compute the inverse hyperbolic cosine for each element of X
.
cos Compute the cosine for each element of X in radians.
cosh Compute the hyperbolic cosine for each element of X.
acosd Compute the inverse cosine in degrees for each element of X
.
cosd Compute the cosine for each element of X in degrees.
cosint Compute the cosine integral function:

Ćwiczenie: zobacz pomoc dla polecenia format. Porównaj wyniki wyświetlania liczby w róznych formatach, np.: short, long, rat, bin

Wykresy

x = -pi:pi;
plot(x, sin(x));

png

plot(x, cos(x), 'o')

png

Inne przydatne komendy

cd zmiana katalogu

dir zawartość katalogu

pwd bieżący katalog

save nazwa zapis zmiennych, load nazwa odczytanie zmiennych

date data

clc czyszcenie wiersza poleceń

quit wyjście z Matlab

date

ans = 03-Nov-2020

Ćwiczenie: wykonaj nastepujące kroki:

usuń wszystkie zmienne i wyczyść wiersz poleceń

utwóż zmienne i

zapisz zmienne w pliku o nazwie dane

usuń zmienne i

wczytaj zmienne z pliku dane i wypisz ich wartości

Skrypty

Tryby pracy Matlab:

interaktywny - w wierszu poleceń

wsadowy - plik *.m (M-pliki) zawierający ciąg instrukcji staje się poleceniem Matlab. Nazwa pliku staje się poleceniem Matlaba

Przykład: uruchomienie pliku hello.m

hello

Witaj Świecie

type nazwa wyświetla zawartość pliku

edit nazwa otwiera edycję pliku

type hello

% To jest pierwszy progeam w Matlab
tekst = 'Witaj Świecie';
disp(tekst)

help hello

To jest pierwszy progeam w Matlab
Additional help for built-in functions and operators is
available in the online version of the manual. Use the command
'doc <topic>' to search the manual index.
Help and information about Octave is also available on the WWW
at https://www.octave.org and via the help@octave.org
mailing list.

Zadanie

Napisz skrypt o nazwie zad1.m, który wykona nastepujące instrukcje:

wypisze Twoje imię i numer indeksu

wypisze wartość funkcji w punkcie z dokładnościa do 3 miejsc po przecinku

wyrysuje wykres na odcinku