It sounds to me that this should be handles using a composite type instead
of a tuple. It may even be immutable if only the content of p changes but
not the variable (pointer) itself.
Am Donnerstag, 22. Mai 2014 15:23:53 UTC+2 schrieb sam cooper:
>
> Hi,
>
> I have an inner loop function which uses a 'constant' tuple:
>
> fhandle = (expdat,obsv,expdev,t)
>
> with types
>
> fhandle::(Matrix{Float64},Vector{Int64},Float64,Vector{Int64})
>
> Currently I am passing fhandle to the function each time it's called and
> then reallocating a set of variables i.e.
>
> function sqrerror(fhandle::(Matrix{Float64},Vector{Int64},Float64,Vector{
> Int64}),p::Vector{Float64})
>
> (expdat,obsv,expdev,tsample) = fhandle
> (obs,error_flag) = odesolve(p,tsample,obsv)
>
> if error_flag
> return(1e16)
> end
> error_val = sum((expdat.-obs).^2,1)
> error_val = sum(error_val./(expdev.^2))
> return(error_val)
> end
>
>
> Only 'p' is changed each time the function is called but fhandle is
> constant but needs to be defined in another file really.
>
> Can I speed this up? I was thinking about using a module with const global
> variables but the documentation suggested global variables are slower.
>
> Thankyou in advance for any help and advice
>
> Best,
> Sam
>
>