MATLAB二维插值方法比较
1.基础数据
ma_list = 0.1:0.1:0.9;
alpha_list = [0:2:10]';
cx_list = [0.4177,0.3858,0.3779,0.3785,0.3787,0.3829,0.3855,0.4082,0.4947;...
0.4404,0.4086,0.4007,0.4015,0.4018,0.4062,0.4091,0.4321,0.5192;...
0.5219,0.4903,0.4827,0.4838,0.4846,0.4897,0.4934,0.5175,0.6073;...
0.6603,0.6290,0.6218,0.6234,0.6249,0.6310,0.6363,0.6621,0.7571;...
0.8534,0.8226,0.8160,0.8184,0.8209,0.8284,0.8358,0.8641,0.9672;...
1.1023,1.0723,1.0666,1.0700,1.0738,1.0835,1.0938,1.1254,1.2392];
ma = 0;alpha = 4;
2.interp2函数
cx = interp2(ma_list,alpha_list,cx_list,ma,alpha)
- linear方法未指定外插方法,返回NaN!
cx = interp2(ma_list,alpha_list,cx_list,ma,alpha,'linear',0)
- linear方法指定外插,但外插值只能是固定常数。
3.griddedInterpolant函数
[alpha_grid,ma_grid] = ndgrid(alpha_list,ma_list);
F = griddedInterpolant(alpha_grid,ma_grid,cx_list);
cx = F(alpha,ma)
- griddedInterpolant函数可以任意指定外插方法(linear、nearest…);
- 计算一个griddedInterpolant对象F在多组不同查询点的插值比分别使用interpn计算插值更快,例如:
% Fast to create interpolant F and evaluate multiple times
F = griddedInterpolant(X1,X2,V)
v1 = F(Xq1)
v2 = F(Xq2)
% Slower to compute interpolations separately using interp2
v1 = interp2(X1,X2,V,Xq1)
v2 = interp2(X1,X2,V,Xq2)
4.结论
二维参数插值时可以用griddedInterpolant函数,既可指定外插方法,又可提高运算速度。