在matlab中的循环下查找非连续值

时间:2015-11-13 18:29:32

标签: matlab find continuous

请您帮我解决以下问题吗?我已经被困在这里一段时间了。

我的数据如下。你可以看到有3个循环(列A,B和C),列D包含我想要在索引连续位置的计算值。

enter image description here

然而,这些指数根本不是连续的。你可以在第3循环(C列)看到,它很好地从1-4开始,然后是下一个循环,它错过了3 ......依此类推。因此,第二循环也不顺利。这些不连续的标记为红色数字或行......

我想要的是D列中的插值,以防它们之间存在间隙,简单的插值对我来说已经很好了。

说我的循环从1:nA,1:nB和1:nC。对于这个非常简短的例子,nA = 2,nB = 3,nC = 4,但我的真实数据高达数百......

1 个答案:

答案 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