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