Matlab függvény: szinuszjelek illesztése harmonikus rezgésekhez
A Fizipedia wikiből
A fit_sins() függvény leírása
Az alábbi egyszerű függvénnyel két közös időalappal rendelkező szinuszjel illeszthető úgy, hogy az egyes jelek illesztési paraméterei mellett visszakapjuk a két illesztett jel amplitúdójának arányát és a fáziskülönbségét is.
A függvény három bemeneti vektort vár, melyek hossza meg kell egyezzen! Ezek rendre az időalap (t), az első és második szinusz jelegű jel (sin1 és sin2).
A függvény a következő kimeneteket adja vissza:
- A1 - A sin1 jelre illesztett A*sin(2*pi*f*t+phi) függvény A paramétere, azaz amplitúdója
- f1 - A sin1 jelre illesztett A*sin(2*pi*f*t+phi) függvény f paramétere, azaz frekvenciája (mértékegysége a t vektor mértékegységének reciproka)
- phi1 - A sin1 jelre illesztett A*sin(2*pi*f*t+phi) függvény phi paramétere, azaz fázisa
- A2 - A sin2 jelre illesztett A*sin(2*pi*f*t+phi) függvény A paramétere, azaz amplitúdója
- f2 - A sin2 jelre illesztett A*sin(2*pi*f*t+phi) függvény f paramétere, azaz frekvenciája (mértékegysége a t vektor mértékegységének reciproka)
- phi21 - A sin2 jelre illesztett A*sin(2*pi*f*t+phi) függvény phi paramétere, azaz fázisa
- A_ratio - A sin2 és sin1 jelekre illesztett szinuszjelek amplitúdóinak hányadosa, azaz A2/A1
- phi_diff - A sin2 és sin1 jelekre illesztett szinuszjelek fázisának különbsége, azaz phi2-phi1
A függvény Matlab kódja
A függvény megtalálható a laboros notebook-okon!
function [A1,f1,phi1,A2,f2,phi2,A_ratio,phi_diff]=fit_sins(t,sin1,sin2) arguments t {mustBeVector,mustBeNumeric, mustBeFinite} sin1 {mustBeVector,mustBeNumeric, mustBeFinite} sin2 {mustBeVector,mustBeNumeric, mustBeFinite} end A1=[]; f1=[]; phi1=[]; A2=[]; f2=[]; phi2=[]; A_ratio=[]; phi_diff=[]; if(length(t)~=length(sin1)|length(t)~=length(sin2)) disp("A bemeneti vektorok ne azonos hosszúak!") return end
fit1=fit(t,sin1,'sin1'); fit2=fit(t,sin2,'sin1');
A1=fit1.a1; f1=fit1.b1/2/pi; phi1=fit1.c1; A2=fit2.a1; f2=fit2.b1/2/pi; phi2=fit2.c1; A_ratio=A2/A1; phi_diff=phi2-phi1; end