% jelek és rendszerek Matlab segédlet by HA7WEN
close all
clear all
clc

% Matlap csodaparancs
help help
% vagy
% help <function>

% sorvektor
sor = [ 5 2 3 ]

% numerikus konvolúció
konv = conv(sor,sor)

% oszlopvektor
oszlop = [ -4; 5; 8 ]

% skaláris szorzat
skalaris_szorzat = sor * oszlop

% mátrix lesz belõle
matrix = oszlop * sor

% nulla sor
tizhosszunullasor = zeros(1,10)

% egy oszlop
haromhosszuegyoszlop = ones(3,1)

% 2x2-es egy mátrix
ketszerkettesegymatrix = ones(2,2)

% 5x5-ös egységmátrix
otszorotosegysegmatrix = eye(5)

% mátrix második sora
masodiksor = matrix(2,:)

%mátrix harmadik oszlopa
harmadikoszlop = matrix(:,3)

% mátrix elsõ sorának második eleme
elsosormasodikeleme = matrix(1,2)

% véletlen mátrix
m = rand( 3 )

% mátrix determináns
determinans = det( m )

% inverz mátrix
inverz = inv( m )

% inverz ellenõrzés
inv_ell = m * inverz

% sajátérték - sajátvektor számítás
[sajatvektor,sajatertek]=eig(m)

% mátrix rang számítás
rang = rank(m)

% többedfokú egyenlet gyökeinek számítása
% 6*x^3+5*x^2+4*x+3=0
gyokok = roots([6 5 4 3])

% gyökökbõl többedrendû polinom, amelynél az x legmagasabb
% hatványkitevõjére normál--> ezért *6
polinom = poly( gyokok ) * 6

% egy adott polinom értéke x=3 esetén
p = polyval(polinom,3)


% polinom / polinom alakú kifejezés áttranszformálása inverz Laplace
% illetve inverz Z transzformálható alakra, melyre a matekosok azt
% mondanák, hogy: " racionális törtfüggvények integrálása parciális
% részlettõrtekre bontással" - jól hangzik, ez nálunk a letakarós szabály
num = [ 4 3 1 ]
den = [6 1 7 8]
sys=tf(num,den)
help residue
[r,p,k]=residue(num,den)

% komplex számok
c = 3+j*4

% a komplex szám abszlút értéke
a = abs( c )

% a komplex szám fázisa fokban
f = angle(c)*180/pi

% komplex konjugált
konj = conj(c)

% állapotváltozós leírás
help ss

% állapotváltozós leírásból átviteli függvény
help ss2tf

% átviteli függvénybõl állapotváltozós leírás
help tf2ss

% ha valamit ábrázolni kell
% vektor megadás: 0-tól, tizedenként 2pi-ig
% ha pontosvesszõvel zárod a sort, akkor az eredményvektort nem jeleníti
% meg
x = 0 : 0.1 : 2*pi;
y = sin(x);
z = cos(x);
figure(1)
plot(x,y,'red',x,z,'blue')
grid on
title('Szinusz és koszinusz függvény')
xlabel('szög [rad]')
ylabel('amplitúdó')
legend('szinusz','koszinusz')
shg % show hidden graph
% ha ezt diszkrétben szeretnéd ábrázolni
figure(2)
stem(x,y)
grid on


% Bode-diagram kirajzolása
num=[1]
den=[1 1]
figure(3)
bode(num,den)
grid on

% vagy ha valaki számolgatni akar, logaritmikus frekvencia skála mellett
num=[1]
den=[1 1]
om = logspace(-2,2,100); % 10^-2-tõl 10^2-ig, 100 pontban logaritmikusan
w=polyval(num,j*om)./polyval(den,j*om);
figure(4)
subplot(2,1,1)
semilogx(om,20*log10(abs(w)))
grid on
title('Amplitude diagram')
xlabel('freq [rad/s]')
ylabel('Amplitude [dB]')
subplot(2,1,2)
semilogx(om,angle(w)*180/pi)
grid on
title('Phase diagram')
xlabel('freq [rad/s]')
ylabel('phase [deg]')

% ha a legutóbb kirajzolt plot-ot szeretnéd elmenteni png fájlba
print -dpng bode.png
