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

Home » Public Forums » archive » connect the dots . . . A question
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: connect the dots . . . A question [message #33918 is a reply to message #33821] Mon, 03 February 2003 18:30 Go to previous message
Thomas Gutzler is currently offline  Thomas Gutzler
Messages: 44
Registered: November 2002
Member
Sean Raffuse wrote:
> Hello venerable newsgroup.

Hi Sean

> I have an algorithmic question.
>
> I'd like to interpolate values for everywhere in an array that I don't have
> data. e.g.
>
> myFullArray = intarr(12)
> values = [10,20,30,20] ;the values I do have
> indexes = [2,4,6,10] ;the locations associated with these values
>
> In other words, I want to turn this [?,?,10,?,20,?,30,?,?,?,20,?]
>
> into this [10,10,10,15,20,25,30,28,25,23,20,20]
>
> Any thoughts?

You might need.
newindexes = indgen(12)
myFullArray = INTERPOL(values,indexes,newindexes)

which gives you an interpolated result:
[0, 5, 10, 15, 20, 25, 30, 28, 25, 23, 20, 18]

If you really want to get rid of the interpolated values at the indexes
0, 1 and 11 ... well

changeme = VALUE_LOCATE(indexes,newindexes)
myFullArray[WHERE(changeme LT 0)] = values[0]
myFullArray[WHERE(changeme GT N_ELEMENTS(values)-2)] =
values[N_ELEMENTS(values)-1]
or, as I've learned :)
myFullArray[WHERE(changeme GT N_ELEMENTS(values)-2)] =
(values[[2147483647L]])[0]

Result:
[10, 10, 10, 15, 20, 25, 30, 28, 25, 23, 20, 20]

Maybe this can be done better :)

Tom
[Message index]
 
Read Message
Read Message
Read Message
Previous Topic: TV, AXIS, T3D, Coordinate Systems
Next Topic: IDL, arrays, and memory

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

Current Time: Wed Oct 08 18:40:53 PDT 2025

Total time taken to generate the page: 0.00825 seconds