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