Strip = [-2.0650, -3.2540, -4.4145, -5.4490, -6.3575, -7.2380, -8.1185, -8.9995, -9.8805, -10.7615, -11.6420, -12.5225, -13.4035, -14.1520, -14.7675, -15.3830];
YA = [-1.103, -2.586, -3.724, -4.981, -5.997, -7.134, -8.271, -9.407, -10.545, -11.682, -12.818, -13.955, -15.69];
%
DFZ = [ 1184.31, 1526.26, 762.50, 562.81, 359.21, 250.49, 180.48, 110.95, 73.79, 48.42, 30.62, 23.56, 4.03;
746.64, 1310.41, 952.00, 649.05, 462.94, 307.50, 209.61, 127.17, 81.29, 52.38, 32.17, 24.46, 5.87;
471.84, 977.42, 946.58, 774.77, 494.69, 321.74, 214.50, 127.93, 80.13, 50.67, 30.56, 22.53, 5.27;
305.12, 610.90, 657.14, 730.46, 510.09, 302.22, 198.04, 115.46, 70.76, 43.97, 25.98, 18.45, 3.78;
241.27, 470.64, 469.33, 625.56, 598.09, 369.79, 225.75, 128.23, 76.21, 46.15, 26.48, 18.55, 3.66;
203.92, 393.14, 373.35, 484.21, 590.13, 487.48, 289.38, 156.48, 90.26, 52.59, 29.20, 20.16, 4.07;
172.49, 329.92, 304.57, 370.21, 476.58, 542.99, 403.83, 202.30, 112.69, 63.06, 33.62, 22.00, 4.71;
145.30, 277.10, 251.22, 295.10, 357.11, 468.45, 518.32, 287.29, 148.14, 79.56, 40.13, 24.65, 5.10;
122.14, 233.34, 208.52, 240.30, 275.85, 344.08, 503.98, 410.61, 210.72, 105.57, 50.03, 28.81, 5.52;
102.56, 196.41, 172.98, 196.53, 218.95, 252.62, 375.33, 470.42, 320.77, 148.75, 66.14, 35.36, 6.22;
84.73, 162.98, 141.44, 158.99, 173.43, 190.78, 257.28, 377.15, 436.28, 228.33, 91.72, 45.02, 7.26;
69.70, 134.30, 115.17, 128.64, 138.52, 147.27, 187.27, 247.97, 395.45, 359.38, 144.13, 63.30, 9.31;
56.51, 108.89, 92.50, 102.78, 109.86, 114.13, 139.44, 170.85, 255.10, 387.73, 255.91, 100.24, 12.92;
30.85, 59.730, 50.24, 55.57, 59.00, 60.25, 71.91, 84.427, 115.63, 201.32, 224.63, 109.67, 12.29;
23.27, 45.200, 37.68, 41.61, 44.03, 44.35, 52.19, 59.597, 77.19, 126.73, 200.29, 149.32, 15.32;
16.60, 32.364, 26.74, 29.44, 31.11, 30.98, 36.03, 40.255, 50.19, 74.54, 135.16, 173.17, 21.94];
Matrix DFZ将参数映射到(Strip vs. YA)网格。 我想将它内插到(YStrip vs. Ystrip)网格上。下面的代码返回一个似乎没问题的答案:
[x, y] = meshgrid(YA,Strip);
[z, w] = meshgrid(Strip,Strip);
DFZ_Strip = interp2(x,y,DFZ,z,w,"spline")
当我使用线性插值尝试相同的代码时,我得到一个NA的矩阵。
关于为什么线性插值不起作用的任何提示?
答案 0 :(得分:1)
给予interp2的x
和y
应严格单调且增加。
例如减少x
和y
x_ = [-1.5 -2.5];
y_ = [-1 -2 -3];
[x__, y__] = meshgrid(x_, y_);
z__ = x__ + y__;
xi_ = x_;
yi_ = x_;
[xi__, yi__] = meshgrid(xi_, yi_);
# zi__ = interp2(x__, y__, z__, xi__, yi__, "spline")
zi__ = interp2(x__, y__, z__, xi__, yi__, "linear")
一个得到
zi__ =
-3 NA
-4 NA
解决方法是对x
,y
进行排序并相应地重新排序z
:
x_ = [-1.5 -2.5];
y_ = [-1 -2 -3];
[x__, y__] = meshgrid(x_, y_);
z__ = x__ + y__;
# sort x and y and reorder z accordingly
[x_sorted_, idx_x_] = sort(x_);
[y_sorted_, idx_y_] = sort(y_);
x__ = x__(idx_y_, idx_x_);
y__ = y__(idx_y_, idx_x_);
z__ = z__(idx_y_, idx_x_);
xi_ = x_;
yi_ = x_;
[xi__, yi__] = meshgrid(xi_, yi_);
# zi__ = interp2(x__, y__, z__, xi__, yi__, "spline")
zi__ = interp2(x__, y__, z__, xi__, yi__, "linear")
然后获得正确的结果:
zi__ =
-3 -4
-4 -5