help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AW: 4D interpolation


From: Ben Abbott
Subject: Re: AW: 4D interpolation
Date: Tue, 27 May 2008 05:46:42 -0700

On Tuesday, May 27, 2008, at 07:35AM, "Hofstaetter, Michael: Mr.: (external)" 
<address@hidden> wrote:

>-----Ursprüngliche Nachricht-----
>Von: Ben Abbott [mailto:address@hidden 
>Gesendet: Dienstag, 27. Mai 2008 13:12
>An: Hofstaetter, Michael: Mr.: (external)
>Cc: address@hidden
>Betreff: Re: 4D interpolation
>
>
>On May 26, 2008, at 3:31 AM, thanatos187 wrote:
>
>>
>> Ben Abbott wrote:
>>>
>>> On May 20, 2008, at 3:52 AM, thanatos187 wrote:
>>>
>>>>
>>>> Hi
>>>> I want to interpolate my values with the spline method. I did it 
>>>> with the
>>>> command:
>>>> vi = interpn(u,v,w,x,z,uu,vv,ww,xx,'spline');
>>>> where u,v,w,x are vectors of the same length defining the point with 
>>>> the value z. uu,vv,ww,xx are creaed by the ndgrid command. i got the 
>>>> error
>>>> message: "wrong number or incorrectly formatted input argument".
>>>>
>>>> thanks for any help
>>>> Thanatos
>>>
>>> Can you post a simple example? Does the problem occur for "nearest", 
>>> "linear", or "cubic" interpolation?
>>>
>>> Ben
>>>
>>> It occurs for all methods. I want to use a spline interpolation. I 
>>> have 1500 data points, so the length of the colum vectors are 1500.
>>> uu,vv,ww,xx, are matrixes of the size (10  10  10  10)
>>>
>>> thanatos
>
>I tried a 3D and 4D example.
>
>clear all
>
>v1 = 0:0.2:2;
>v2 = v1;
>v3 = v1;
>[x1,x2,x3] = ndgrid(v1,v2,v3);
>y = (x1.*x2 + x1.*x2.^2).*x3;
>z = interpn(x1,x2,x3,y,v1,v2,v3,'linear')
>
>v4 = v1;
>[x1,x2,x3,x4] = ndgrid(v1,v2,v3,v4);
>y = (x1.*x2 + x1.*x2.^2).*x3./(1+x4);
>z = interpn(x1,x2,x3,x4,y,v1,v2,v3,v4,'linear')
>
>Both of these work for me. Please verify they work for you as well.
>
>Ben
>
>
>Hi Ben
>
>Your examples also work for me, but i have the problem that my data 
>coordinates are not equidistant in any direction. The coordinates are randomly 
>generated. Additionally are the points not sorted, but this is not a problem. 
>Probably i have to write a new function.
>
>Thanatos
>

Hi Thanatos,

Having non-equidistant points should not be a problem.

You can verify this by calculating v1 as

   v1 =unique(2*rand([1,10]));

and using the same examples as before.

The "unique" function is used in the unlikely event that duplicates exist, and 
to make sure the values are sorted.

You'll need to make sure your values are sorted, but this should not produce 
the error you see.

Regarding your error, can you check the size of your variables corresponding to 
x1, x2, x3, x4 and y? 

octave:22> whos x1 x2 x2 x4 y
Variables in the current scope:

  Attr Name        Size                     Bytes  Class
  ==== ====        ====                     =====  ===== 
       x1         10x10x10x10               80000  double
       x2         10x10x10x10               80000  double
       x2         10x10x10x10               80000  double
       x4         10x10x10x10               80000  double
       y          10x10x10x10               80000  double

Total is 50000 elements using 400000 bytes

You can place this command in your own script and verify that the inputs are 
all correct. When I first tried my example I did not calculate y correctly and 
encountered the same error as you.

Ben





reply via email to

[Prev in Thread] Current Thread [Next in Thread]