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

finding non-continuous values under loops in matlab

你能帮我解决以下问题吗?卡在这里有一段时间了。

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

然而这些索引根本不是连续的。您可以在第 3 个循环(C 列)中看到,它很好地从 1-4 开始,但是下一个循环它错过了 3...等等。因此,第二个循环也不顺利。这些不连续的用红色数字或线标记...

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

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

假设您在变量 A 中有第一组索引,在 B 中有第二组索引,在 C 中有第三组索引,在 [=14] 中=] 值。首先,您需要将它们按顺序放入数组中,然后插入缺失值:

%'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://www.mathworks.com/help/matlab/ref/interp1.html