akima包bilinear.grid函数异常行为技术咨询
问题分析与解决
这属于对akima::bilinear.grid参数逻辑的误解,该现象不正常,是参数使用方式错误导致的。
核心原因
bilinear.grid的nx/ny参数并非基于你传入的x/y实际坐标范围生成等距点,而是默认在输入x/y向量的索引维度上生成指定数量的点。而xlim/ylim参数仅用于裁剪生成后的结果,无法改变初始生成点的范围,这就是你得到非预期x序列的原因。
正确实现方式
要生成基于实际坐标范围的指定数量插值点,需要手动用seq()生成目标x/y坐标序列,通过xo/yo参数传入,而非依赖nx/ny:
my_x = c(1, 5, 20) my_y = c(2, 9) my_matrix = matrix(c(1,3,7,3,2,1), ncol=2) # 生成目标坐标序列:1到20共7个点,2到9共3个点 target_x = seq(from = 1, to = 20, length.out = 7) target_y = seq(from = 2, to = 9, length.out = 3) # 传入xo/yo参数执行插值 my_result_fixed = akima::bilinear.grid( x = my_x, y = my_y, z = my_matrix, xo = target_x, yo = target_y )
此时my_result_fixed$x会是1到20的7个等距点,my_result_fixed$y是2到9的3个等距点,输出的z矩阵为7×3,完全符合预期。
内容的提问来源于stack exchange,提问作者Seb
相关产品推荐
相关产品推荐

