2

以下は私のデータの一部です。1 列目の R は実験で得た値で、XYZ は座標です。matlab nD 補間関数を使用しようとしています。Matlab によると、私の座標は単調増加値ではありません。しかし、座標を変更したり再配置したりすることはできません。

間違った関数を使用しましたか?

どうすればいいのか教えてください。

R              X     Y    Z
5.05256e-18  0.016 0.015 0.032
4.99958e-18  0.016 0.015 0.064
5.04485e-18  0.016 0.015 0.128
5.49613e-18  0.016 0.0195 0.032
5.45348e-18  0.016 0.0195 0.064
5.43161e-18  0.016 0.0195 0.128
5.9393e-18  0.016 0.03 0.032
5.98785e-18  0.016 0.03 0.064
6.01929e-18  0.016 0.03 0.128
6.54936e-18  0.016 0.06 0.032
6.45947e-18  0.016 0.06 0.064
6.52379e-18  0.016 0.06 0.128
5.06516e-18  0.032 0.015 0.032
5.04897e-18  0.032 0.015 0.064
5.14022e-18  0.032 0.015 0.128
5.45993e-18  0.032 0.0195 0.032
5.4616e-18  0.032 0.0195 0.064
5.38434e-18  0.032 0.0195 0.128
5.94097e-18  0.032 0.03 0.032
5.91148e-18  0.032 0.03 0.064
6.05671e-18  0.032 0.03 0.128
6.56989e-18  0.032 0.06 0.032
6.58173e-18  0.032 0.06 0.064
6.45971e-18  0.032 0.06 0.128

これは私のテストコードです。

X=0.06 Y=0.07 Z=0.08 の補間値を取得したい

interpn(X,Y,Z,R,0.06,0.07,0.08,'線形')

matlab メッセージ: griddedInterpolant の使用エラー グリッド ベクトルは厳密には単調増加ではありません。

4

1 に答える 1

3

あなたの問題がベクトルの単調さを少し超えているのではないかと心配しています。この場合に interpn を使用するには、R を 3 次元行列にする必要もあります。また、0.06 と 0.07 の値は、それぞれ X と Y の範囲外にあるようです。

範囲の問題を解決できる場合は、関数を使用してみてください

yi = griddatan(x,y,xi)

あなたの場合、物事は次のようになります:

Grid=[X,Y,Z];
Point=[0.03,0.05,0.08] % with values inside the grid and maybe transposed like  Point=[0.03;0.05;0.08]; I don't know, didn't try it myself.

Result=griddatan(Grid,R,Point);

上で書いたように、私はそれを実行しようとはしなかったので、動作させるためにあちこちを転置する必要があるかもしれませんが、 griddatan() がそのトリックを行うはずだとほぼ確信しています。

于 2013-07-15T09:38:32.030 に答える