以下是我数据的一部分。第1列R是实验得到的值,X Y Z是坐标。我正在尝试使用matlab n-D插值函数。 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时出错 网格向量不是严格单调递增的。
答案 0 :(得分: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()应该做的伎俩