Saya memiliki 4 kisi:

  1. kgrid yaitu [77x1];
  2. x yaitu [15x1];
  3. z yaitu [9x1];
  4. s yaitu [2x1];

Kemudian saya memiliki fungsi V yaitu:

  1. V [77x15x9x2]

Saya mencoba menginterpolasi V pada beberapa titik kprime. Untuk melakukannya, saya melakukan:

[ks, xs, zs, ss] = ndgrid(kgrid, x, z, s);
Vprime = interpn(xs, ks, zs, ss, V, xs, kprime, zs, ss, 'spline');

Di mana kprime adalah [77x15x9x2].

Semua matriks yang dibutuhkan (kgrid, x, z, s, V dan kprime) dapat ditemukan di sini: http://www .filedropper.com/grids

Namun saya mendapatkan kesalahan ini saat menggunakan

Error using griddedInterpolant
Data is not valid NDGRID format.
Error in interpn (line 149)
           F = griddedInterpolant(X{:}, V, method,extrap); 

Setiap petunjuk tentang apa yang bisa menjadi masalah?

0
phdstudent 11 Agustus 2016, 18:13
Apakah kgrid, x, z, dan s semuanya meningkat secara monoton?
 – 
Suever
11 Agustus 2016, 18:14
Ya memang. Semuanya meningkat secara monoton.
 – 
phdstudent
11 Agustus 2016, 18:16
1
Saya pikir Anda perlu menghemat pemesanan yang digunakan dalam output ndgrid. interpn(ks, xs, zs, ss, V, kprime, xs, zs, ss)
 – 
Suever
11 Agustus 2016, 18:19
Ya, Anda benar sekali! Saya konyol. Terima kasih, ini membuatku gila. Jika Anda ingin memposting itu sebagai jawaban, saya akan menerimanya.
 – 
phdstudent
11 Agustus 2016, 18:22

1 menjawab

Jawaban Terbaik

Urutan input ke interpn harus sama dengan urutan output dari panggilan ndgrid Anda. Anda telah membalik ks dan xs.

vprime = interpn(ks, xs, zs, ss, V, kprime, xs, zs, ss);
2
Suever 11 Agustus 2016, 18:23