In [1]:
%plot inline -w 720

Podstawy

Przykłady są dla MATLAB 2017b (jeśli funkcje są inne dla MATLAB 2014a to zaznaczono to w komentarzach)

Macierze i wektory

In [2]:
clear all % usunięcie zmiennych z pamięci
format compact

In [3]:
X=[1 2 3; 4 5 6]  % wprowadzenie macierzy
X =
     1     2     3
     4     5     6

In [4]:
X(3,4)=8           % wprowaczenie wartości elementu w wierszu i kolumnie
X =
     1     2     3     0
     4     5     6     0
     0     0     0     8

In [5]:
X(3,1:2)=9          % wprowaczenie wartości elementu w wierszu i kolumnach
X =
     1     2     3     0
     4     5     6     0
     9     9     0     8

In [6]:
X(2,:)=7            % wprowaczenie wartości elementu w wierszu i całej kolumnie
X =
     1     2     3     0
     7     7     7     7
     9     9     0     8

In [7]:
Z=zeros(4)  % stworzenie kwadratowej macierzy zer, analogicznie działa funkcja "ones", "eye"
Z =
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0

In [8]:
O=ones(4,2)      % stworzenie macierzy jedynek o wymiarach 4 na 2
O =
     1     1
     1     1
     1     1
     1     1

In [9]:
R=rand(3,6)     % stworzenie macierzy liczb pseudolosowych z przedziału [0, 1]
R =
    0.8147    0.9134    0.2785    0.9649    0.9572    0.1419
    0.9058    0.6324    0.5469    0.1576    0.4854    0.4218
    0.1270    0.0975    0.9575    0.9706    0.8003    0.9157

In [10]:
x=X(1,3)          % odczyt wartości elementu w wierszu i kolumnie
x =
     3

In [11]:
A=X(1,:)          % odczyt wartości wszystkich elementów w pierwszym wierszu
A =
     1     2     3     0

In [12]:
x=0:6             % stworzenie wektora z liczb całkowitych od 0 do 6
x =
     0     1     2     3     4     5     6

Wykres funkcji

plot (MATLAB Documentation)

In [13]:
x=0:0.5:6         % stworzenie wektora z krokiem 0.5
x =
         0    0.5000    1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000    5.0000    5.5000    6.0000

In [14]:
y=x.^2            % wpisanie wzoru (.^ - operator działań na tablicach)
y =
         0    0.2500    1.0000    2.2500    4.0000    6.2500    9.0000   12.2500   16.0000   20.2500   25.0000   30.2500   36.0000

In [15]:
plot(x,y,'o-'); xlabel('x'); ylabel('y')

_images/matlab_notebook_16_1.png

Wykorzystanie funkcji anonimowej \(f(x)\):

In [16]:
f=@(x) x.^2        % zdefiniowanie funkcji f
f =
  function_handle with value:
    @(x)x.^2

In [17]:
plot(x,f(x),'.-'); xlabel('x'); ylabel('y')

_images/matlab_notebook_19_1.png
In [18]:
[X,Y] = meshgrid(-2:0.2:2,-2:0.2:2);
Z = X.*exp(-X.^2 - Y.^2);
figure
surface(X,Y,Z)
grid on
view(3)

_images/matlab_notebook_20_1.png
In [19]:
contourf(X,Y,Z, 20)      % wykres konturowy
colorbar

_images/matlab_notebook_21_1.png

Anonimowe funkcje i ich wykorzystanie

Anonymous functions (MATLAB Documentation)

Definicja funkcji \(h(x) = {g} \cdot {x}\) :

In [20]:
g = 10;
h = @(x) g*x;

Definicja funkcji \(f(x)=sin(\alpha x)\) :

In [21]:
alpha = 0.8;
f = @(x) sin(alpha*x);

Wykres funkcji z zaznaczoną powierzchnią pod nim:

In [22]:
x = 0:pi/100:pi;
area(x,f(x)); % You can evaluate f without feval
title(['f(x) = sin(\alpha x), \alpha =' num2str(alpha)]);

_images/matlab_notebook_27_1.png

Numeryczne wyznaczenie wartości całki oznaczonej \(\int_0^\pi sin(\alpha x)\) przy pomocy funckcji quad:

In [23]:
I=quad(f,0,pi)
I =
    2.2613

Wyznaczenie maksimum funkcji \(sin(\alpha x)\) w przedziale \([0,\pi]\) przy pomocy funkcji fminsearch:

In [24]:
f2=@(x)-f(x);
area(x,f2(x))

_images/matlab_notebook_31_1.png
In [25]:
x_ext = fminsearch(f2,0)
x_ext =
    1.9635

Wyznaczenie miejsca zerowego funkcji \(f(x)=x-cos(x)\) :

In [26]:
fun=@(x)x-cos(x)
x_z=fzero(fun,1)        %punkt początkowy x_0=1
fun =
  function_handle with value:
    @(x)x-cos(x)
x_z =
    0.7391

Rozwiązanie układu równań

Rozwiązanie układu równań ( mldivide ) :

\[\begin{split}\begin{eqnarray} 4a_1 + 2a_2 + a_3 = 2 \\ 2a_1 + a_2 + a_3= 4 \\ a_1 + 6a_2 + a_3 = 0 \\ \end{eqnarray}\end{split}\]
In [27]:
%Xa=Y
X=[4 2 1
   2 1 1
   1 6 1]
Y=[2 4 0].'

a=X\Y
X =
     4     2     1
     2     1     1
     1     6     1
Y =
     2
     4
     0
a =
   -0.5455
   -0.9091
    6.0000

Pętle i instrukcje warunkowe

Pętla while :

In [28]:
c=3
while c>0
c=c-1;
disp(c)
end
c =
     3
     2
     1
     0

Pętla for :

In [29]:
for c=3:-1:0
disp(c)
end
     3
     2
     1
     0

Instrukcja warunkowa if :

In [30]:
x=2
if x > 0
       disp('x is positive')
   elseif x<0
       disp('x is negative')
   else
       disp('x is 0')
end
x =
     2
x is positive

Obliczenia symboliczne

Symbolic Math Toolbox

Wyznaczanie wzoru pochodnej lub całki:

In [31]:
syms x

In [32]:
diff(2*x^2)           % wyznaczenie wzoru pochodnej
ans =
4*x

In [33]:
I_s=int(2*x^2)         % wyznaczenie wzoru całki
I_s =
(2*x^3)/3

In [34]:
I_s=int(2*x^2, 0, 2)   % całkowanie w granicach [0, 2]
I_s =
16/3

In [35]:
double(I_s)             % zamiana ze zmiennej symbolicznej na "double"
ans =
    5.3333

In [36]:
syms a b y(x)
dsolve(diff(y) == -a*y)           % rozwiązanie ogólne równania
ans =
C1*exp(-a*x)

In [37]:
dsolve(diff(y) == -a*y, y(0)==b)  % z uwzględnieniem warunku początkowego
ans =
b*exp(-a*x)

Rysowanie wykresów:

In [2]:
syms t
x = t*sin(5*t);
y = t*cos(5*t);
fplot(x, y, [0 2*pi])    % dla wersji 2014a analogiczny wykres rysuje 'ezplot'
grid on


_images/matlab_notebook_54_1.png
In [39]:
syms x y
fsurf(sin(x) + cos(y))   % dla wersji 2014a analogiczny wykres rysuje 'ezsurf'

_images/matlab_notebook_55_1.png
In [40]:
fcontour(sin(x) + cos(y))    % dla wersji 2014a analogiczny wykres rysuje 'ezcontour'

_images/matlab_notebook_56_1.png