echo on
% -------------------------------------------------------------------------
% Irányítástechnika II.
% 1. számítógépes gyakorlat
% MATLAB alapok
% -------------------------------------------------------------------------
% Az egyik legfontosabb parancs: help
% -------------------------
help sqrt
pause
%
% -------------------------------------------------------------------------
% A parancs ablakban végrehajthatunk egyszerû matematikai mûveleteket
% -------------------------------------------------------------------------
% pl. négyzetgyök
% -------------------------
sqrt(4*9) 
pause
%
% -------------------------------------------------------------------------
% Beépített változók
% -------------------------------------------------------------------------
%
% utolsó mûvelet eredménye
% -------------------------
ans
% a pi szám
% -------------------------
pi
% képzetes egység (matematikusoknak)
% -------------------------
i
% képzetes egység (mérnököknek)
% -------------------------
j 
pause
%
% -------------------------------------------------------------------------
% Értékadás saját változónak. A nagy és kis betûket a MATLAB megkülönbözteti. 
% A változók törlése: clear
% -------------------------------------------------------------------------
a = 5
A = 10
% Ha nem akarjuk az eredményt kiiratni az utasítás után pontosvesszõt kell tenni.
% -------------------------
b = pi/3;
pause
%
% -------------------------------------------------------------------------
% A változó értékének lekérdezése a nevének begépelésével történik
% -------------------------------------------------------------------------
a
A
b
pause
%
% -------------------------------------------------------------------------
% Komplex számok
% -------------------------------------------------------------------------
c = sqrt(-9)+3
% polár kordinátákkal:
% -------------------------
C = A*exp(b*i)
% komplex konjugált
% -------------------------
c'
pause
% valós rész, képzetes rész, abszolut érték, szög
% -------------------------------------------------------------------------
real(C)
imag(C)
abs(C)
angle(C)
pause
%% -------------------------------------------------------------------------
% MÁTRIXOK. Vektorok megadása szögletes zárójelek között történik:
% -------------------------------------------------------------------------
% sorvektor esetén az egyes elemek közé szóköz (vagy vesszõ) kerül
% -------------------------
v =[1 2 3]
% Oszlopvektornál pontosvesszõ
% -------------------------
w = [1;2;3]
% Transzponálással oszlopból sorvektor (és fordítva)
% -------------------------
v'
w'
pause
%
% -------------------------------------------------------------------------
% Mátrix megadása hasonlóan
% -------------------------------------------------------------------------
A = [1 2 3; 4 -5 6; -7 8 9]
% Transzponált mátrix
% -------------------------
A' 
pause
%
% -------------------------------------------------------------------------
% Hivatkozás az elemekre
% -------------------------------------------------------------------------
% az elsõ sor második eleme
% -------------------------
A(1,2) 
% a második sor
% -------------------------
A(2,:) 
% az elsõ oszlop
% -------------------------
A(:,1)
% az elsõ két oszlop elemeibõl álló mátrix
% -------------------------
A(:,1:2) 
% a 2-3 sor és az 1-2 oszlop elemeibõl álló mátrix
% -------------------------
A(2:3,1:2) 
pause
% -------------------------------------------------------------------------
% Mûveletek mátrixokkal
% -------------------------------------------------------------------------
% Csak a megfelelõ méretû mátrixokkal lehet mûveleteket végezni
% A mátrix dimenziójának lekérdezése
% -------------------------
A
size(A) 
v
size(v)
pause
%
% A mátrix elemeihez skalárt adunk
% -------------------------
A+2
% A mátrix elemeit skalárral szorozzuk
% -------------------------
2*A
% Mátrix összeadás-kivonás
% -------------------------
A+A
A-A
pause
%
% -------------------------------------------------------------------------
% A mátrixmûveletek szabályait be kell tartani
% A+v vagy A*v parancs hibát generálna
% Így lehet szorozni
% -------------------------
A*v' 
v*A
pause
%
% Hatványozás
% -------------------------------------------------------------------------
A*A
A^2
pause
% -------------------------------------------------------------------------
% Mûveletek elemenként
% -------------------------------------------------------------------------
% vektor elemeinek összeadása 
sum(v)
%  mátrix esetén az oszlopok elemeinek összegét kapjuk
sum(A)
pause 
% -------------------------------------------------------------------------
% Elemenkénti szorzás
% -------------------------
A.*A 
% Elemenkénti osztás
% -------------------------
A./A 
% Elemenkénti hatványozás
% -------------------------
A.^2 
pause
% -------------------------------------------------------------------------
% Mátrix függvények
% -------------------------------------------------------------------------
% Inverz mátrix
% -------------------------
inv(A)
A*inv(A)
%
% Mátrix exponens
% -------------------------
expm(A)
pause
% determináns
% -------------------------
det(A)
% sajátértékek
% -------------------------
eig(A)
% rangja
% -------------------------
rank(A) 
% nyoma stb..
% -------------------------
trace(A)
pause
% -------------------------------------------------------------------------
% Speciális mátrixok
% -------------------------------------------------------------------------
% 4x4-es egyégmátrix
% -------------------------
eye(4) 
% 3x2-es nullmátrix
% -------------------------
zeros(3,2)
% 3x2-es csupa egyes mátrix
% -------------------------
ones(3,2)
% diagonális mátrix megadása a fõatló elemeivel
% -------------------------
diag([1 2 3]) 
pause
% -------------------------------------------------------------------------
% Véletlen számok
% -------------------------------------------------------------------------
% 3x2-es véletlen mátrix, elemei a [0 , 1] intervallumon egyenletes eloszlásúak
% -------------------------
rand(3,2) 
% 3x2-es véletlen mátrix, elemei a 0 várható értékû 1 szórású normális eloszlásúak
% -------------------------
randn(3,2) 
% -------------------------------------------------------------------------
% Megjegyzés: Ha a matematikából skalárváltozósnak megismert  
% függvényt (pl. sin, exp, stb.) hívunk meg mátrix, vagy vektor argumentummal,
% akkor az egyes elemek függvényértékeit tartalmazó ugyanolyan
% méretu mátrixot, vagy vektort kapjuk vissza:
B = rand(3,2);
sin(B)
pause
%% -------------------------------------------------------------------------
% Polinomok definiálása sorvektorokkal
% -------------------------------------------------------------------------
% A vektroban a polinom együtthatóit tároljuk a lemagasabb hatványú
% tagjával kezdve
% -------------------------
p1 = [2 3 1 4]; % 2x^3 + 3x^2 + x + 4
p2 = [1 2 3 0]; % x^3 + 2x^2 + 3x
pause
% Polinomok definiálása a gyökökkel
% -------------------------------------------------------------------------
p = poly([1 2 3]) % p(x) = (x-1)(x-2)(x-3)
pause
% A polinom x=t helyen felvett értéke (pl. t = 4)
% -------------------------
polyval(p,4)
pause
% -------------------------------------------------------------------------
% Mûveletek polinomokkal
% -------------------------------------------------------------------------
% polinomok szorzása
% -------------------------
p = poly([1 2]); % p(x) = (x-1)(x-2)
q = poly([5 6 3]); % q(x) = (x-1)(x-2)(x-3)
pq = conv(p,q)   % p(x)q(x) = (x-1)(x-2)(x-1)(x-2)(x-3)
pause
% polinomok osztása
% -------------------------
[s,r] = deconv(q,p)
% q(x)-et elosztva p(x)-szel a hányados s(x), a maradék pedig r(x), vagyis
% q(x) = s(x)p(x) + r(x). Ellenörzés:
% -------------------------
q
conv(s,p) + r
pause
% polinom gyökei
% -------------------------
roots(q)
pause
%% -------------------------------------------------------------------------
% Grafikus ábrázolás
% -------------------------------------------------------------------------
% Adatsorok, idõsorok létrehozása
% -------------------------
x = 0:0.2:2*pi;
y = sin(x);
% vagy
x2 = linspace(0,2*pi,32);
% A megnyitott ábrák bezárása
close all
% Az y értékek ábrázolása x függvényében
% -------------------------
plot(x,y)
% rácsvonalak megjelenítése
% -------------------------
grid
pause
% Az ábra megjelenésének formázása (lásd még help plot)
% -------------------------
plot(x,y,'r--')
pause
% Több ábra egymáson ábrázolása
% -------------------------------------------------------------------------
z = cos(x);
plot(x,y,'r',x,z,'b')
pause   
%Másik lehetõség az elõzõ ábra megtartása és belerajzolás
% -------------------------
plot(x,y,'r--')
hold on
plot(x,z,'b--')
pause
% a tartás kikapcsolása
% -------------------------
hold off
plot(x,z,'k')
pause
% További megjelenítési formák
% -------------------------
hold on
stem(x,z,'r--')
stairs(x,z,'b')
pause
% Ábrafeliratok
% -------------------------
legend('plot','stem','stairs')
pause
% további feliratok
% -------------------------
title('abra cime')
xlabel('x_1 tengely felirat')
ylabel('y_1 tengely felirat')
hold off
pause
% A tengelyek skálázása
% -------------------------------------------------------------------------
axis([0 2*pi  -1.5 1.5])
pause
% Több ábra egy ablakban ábrázolása
% -------------------------------------------------------------------------
% új üres ábra megnyitása 
subplot(2,2,1); plot(x,sin(x)); title('sin');
subplot(2,2,2); plot(x,cos(x)); title('cos');
subplot(2,2,3); plot(x,tan(x)); title('tan');
subplot(2,2,4); plot(x,exp(x)); title('exp');
pause
% Ábrázolás logaritmikus skálán
%--------------------------------------------------------------------------
close
x = logspace(-1,1,100);
y = x.*x;
loglog(x,y);
grid;
pause
% Decibel skála az y-tengelyen
%--------------------------------------------------------------------------
semilogx(x,20*log10(y));
grid;
pause
% 3D grafikus lehetõségek. Példa:
% -------------------------------------------------------------------------
close all
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square
pause
close all
%% ------------------------------------------------------------------------
% MATLAB programozás
% -------------------------------------------------------------------------
% Scripteket és függvényeket .m kiterjesztésû file-okba írhatunk
% -------------------------
fakt(5)
pause
% Függvényt definiálhatunk egy MATLAB munkamenet ideére is:
% -------------------------
f = inline('sqrt(x.^2+y.^2)','x','y')
f(3,4)
pause
% String kezelés a C nyelvhez hasonlóan
% -------------------------
A = zeros(3,2)
a = size(A);
s = sprintf('Az A mátrix %d sorból és %d oszlopból áll.',a(1),a(2))
pause
% Programozási nyelvekhez hasonló vezérlési szerkezetek:
% if-else-end, switch-case, for, while
% További információ: help





