fit krivky

Marek Peca marek@tynska.cuni.cz
Pondělí Srpen 6 09:41:36 CEST 2007


> Clovek sa uci cely zivot :-) Cely problem ktory riesim je 
> charakterizacia AD prevodnika s IQ demodulatorom z nasamplovanych dat. 
> Inymi slovami vykreslit z nameranych dat krivku a zistit ako velmi to 
> nie je idealna kruznica.
> kedze kruznica nie je analyticka (tusim sa to tak vola) funkcia, t.j. 
> pre jednu hodnotu x ma viacero hodnot y chcem urobit fit jej 
> komponentov. T.j. mam dve ortogonalne sinusovky nesuce kanal I a kanal Q.
> Namerane data maju jednosmerny offset, chybu v amplitude a chybu vo 
> faze. Toto v konecnom dosledku z kruznice urobi pootocenu splacatewnu 
> elipsu.

> Cez namerane data chcem teda prelozit sinusovku a pomocou metody 
> najmensich stvorcov zistit jej parametre (amplituda, offset, faza). 
> Frekvenciu samozrejme poznam. To je linearna regresia?

Ano. Je to linearni kombinace a*cos(w*t)+b*cos(w*t) a protoze w znas,
je to linearni fce v parametrech a, b. Je to shodne s vypoctem 1
spektralni cary v DFT.

> Pozeral som si priklady ako sa pocita fit pomocou metody najmensich 
> stvorcov a v principe tam nevidim problem. Urobi sa akurat viac 
> parcialnych derivacii (lebo je viac premennych) a malo by to vyjst. mam 
> pravdu alebo som naivny? :-)

No je to pravda, ale v pripade linearni regrese jsou ty parcialni
derivace konstanty ;-).

> Vcera som nasiel tento clanok 
> http://dvaluch.web.cern.ch/dvaluch/temp/adc/0034_2.pdf ktory sa zaobera 
> niecim podobnym. Matlab velmi neovladam tak som si len tak narychlo na 
> par bodoch skusil tu metodu implementovat v exceli a vyzera ze to 
> funguje http://dvaluch.web.cern.ch/dvaluch/temp/adc/sinfit.xls
> Iteracia sa tam robi rucne :-) ale inak to funguje.
> Tak sa pozrem ktore z nasich softverov to vedia spravit rovno a ked nie 
> tak sa pustim do implementacie v matlabe.
> Co si o tom myslis?

Ja si o tom myslim, ze pokud Ti jde skutecne jen o zjisteni
amplitudy, ss. slozky a faze, tak nemusis nic implementovat. Bud
napis v gnuplotu fit (to mas za 5 minut), sice je to kanon na vrabce,
ale fungovat to bude stejne dobre, nebo napis v Matlabu zpetne
lomitko a mas to.

gnuplot (neovereno):
f(t)=a*cos(t)+b*sin(t)+c

fit 'data.txt' f(x) via a,b,c

nebo tak nejak. help fit atd.

V Matlabu:

t=(0:0.001:neco)';
A=[cos(t) sin(t) ones(length(t),1)];
y=namerenadata(:);

a=A\y


Zdar, MP


P.s> Jak moc je tento pristup vhodny k posouzeni nekruhovosti
kolecka, to nevim. Ted mi to moc nemysli, tak radsi nebudu delat
unahlene zavery.




Další informace o konferenci Hw-list