comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: mpfit: multivariate fit
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: mpfit: multivariate fit [message #53918 is a reply to message #53917] Tue, 08 May 2007 07:23 Go to previous messageGo to previous message
Dave[3] is currently offline  Dave[3]
Messages: 12
Registered: November 2006
Junior Member
Thanks hradilv, that does help. I also found that I could get it to
work if I expand the dimensions and make everything a vector prior to
fitting. I'd be interested in knowing from Craig if your fix is ok as
I greatly prefer it to the fiddling below.

function trans, K, X=x, Y=y, err=err, forward=fw

kk = reform(K, 3, n_elements(k)/3)
xx = reform(x, 3, n_elements(x)/3)

model = KK # xx

model = reform(model, n_elements(model))

if keyword_set(fw) then return, model else return, (y-model)/err
end

; MAIN

; Attempt to estimate the transformation matrix given a set
; of observed cartesian vectors and a set of known cartesian
; vectors.

n = 1000 ; number of 'observations'

v = [1.0d, 0.15, 0.5] ; template vector
xyz_obs = dblarr(3,n) ; observations
for i=0, n-1 do $
xyz_obs[*,i] = v+0.01*randomn(seed,3)

xyz_known = dblarr(3,n) ; known values (trivial scaling)
for i=0, n-1 do $
xyz_known[*,i] = v*2.0d

; Estimate the transformation matrix, T
T0 = identity(3, /DOUBLE) ; initial guess transformation matrix
f = {x: reform(xyz_obs,3*n), $
y: reform(xyz_known,3*n), $
err: 0.01}
T = mpfit('trans', reform(T0,3*3), functargs=f, COVAR=S2, /NOCATCH)
T = reform(T, 3, 3)

; Residuals
res = trans(reform(T,3*3), X=reform(xyz_obs,3*n), /FORWARD) - $
reform(xyz_known,3*n)

T_known = identity(3) * 2.0d
res_known = trans(reform(T_known,3*3), X=reform(xyz_obs,3*n), /
FORWARD) - $
reform(xyz_known,3*n)
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: How to print 100 in exponential format as '10^2'
Next Topic: Re: How to print 100 in exponential format as '10^2'

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 14:54:09 PDT 2025

Total time taken to generate the page: 0.47993 seconds