请您帮我解决以下问题吗?我已经被困在这里一段时间了。
我的数据如下。你可以看到有3个循环(列A,B和C),列D包含我想要在索引连续位置的计算值。
然而,这些指数根本不是连续的。你可以在第3循环(C列)看到,它很好地从1-4开始,然后是下一个循环,它错过了3 ......依此类推。因此,第二循环也不顺利。这些不连续的标记为红色数字或行......
我想要的是D列中的插值,以防它们之间存在间隙,简单的插值对我来说已经很好了。
说我的循环从1:nA,1:nB和1:nC。对于这个非常简短的例子,nA = 2,nB = 3,nC = 4,但我的真实数据高达数百......
答案 0 :(得分:1)
假设您在变量A
中有第一组索引,B
第二组索引,C
第三组索引,以及D
价值。首先,您需要将它们按顺序排列在数组中,然后插入缺少的值:
%'Calculate the max indices'
nA = max(A);
nB = max(B);
nC = max(C);
%'Calculate the linear indices out of subscripts'
I = nB*nC*(A(:)-1) + nC*(B(:)-1) + C(:);
%'Interpolate the values'
V = interp1(I, D(:), transpose(1:nA*nB*nC), 'linear');
您可以参考帮助来尝试更高级的插值方法:http://php.net/manual/en/language.namespaces.importing.php