Re: changing matrix size using interpolation [message #74419] |
Mon, 17 January 2011 07:52 |
oxfordenergyservices
Messages: 56 Registered: January 2009
|
Member |
|
|
On Jan 17, 2:59 pm, David Fanning <n...@dfanning.com> wrote:
> David Fanning writes:
>> I think most people use the CONGRID command, with the INTERP
>> keyword set.
>
>> b = Congrid(a, 7, 7, /INTERP)
>
> And now that I think about it, I think the CENTER keyword
> should probably be set, too, especially if you are working
> with small arrays.
>
> b = Congrid(a, 7, 7, /INTERP, /CENTER)
>
> Cheers,
>
> David
Thanks David
I tried both ways, they look identical (in tv,bytscl and shade_surf)
but they do different things outside the topographic region (ie sea
level) when /cubic is set. They also seem to have 5% difference on
the land, but could be due to subtly different algorithms
|
|
|
Re: changing matrix size using interpolation [message #74422 is a reply to message #74419] |
Mon, 17 January 2011 06:59  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
David Fanning writes:
> I think most people use the CONGRID command, with the INTERP
> keyword set.
>
> b = Congrid(a, 7, 7, /INTERP)
And now that I think about it, I think the CENTER keyword
should probably be set, too, especially if you are working
with small arrays.
b = Congrid(a, 7, 7, /INTERP, /CENTER)
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|
Re: changing matrix size using interpolation [message #74423 is a reply to message #74422] |
Mon, 17 January 2011 06:57  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
geoff writes:
> I think this might not be too hard but it would be great to have a
> pointer to the routines...
>
> I have a x by y matrix (of elevations for a topographic map)
>
> I want to turn it into a new matrix which is n by m where n and m
> could be greater or less than x or y and not necessarily an integer
> multiple or fraction.
>
> I have tried this...
>
> x=4.0
> y=4.0
>
> a=findgen(x,y)
>
> m=7.0
> n=7.0
>
> b=interpolate(a,findgen(m)*(x-1)/(m-1),findgen(n)*(y-1)/(n-1 ),/
> GRID,missing=-1)
>
> print,a
> print,b
>
> and it seems to work, but this must have been done many times before
> and just wanted to check I'm right?
I think most people use the CONGRID command, with the INTERP
keyword set.
b = Congrid(a, 7, 7, /INTERP)
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|