【问题标题】:finding non-continuous values under loops in matlab在matlab中的循环下查找非连续值
【发布时间】:2015-11-13 18:29:32
【问题描述】:

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

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

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

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

假设我的循环从 1:nA、1:nB 和 1:nC 开始。对于这个非常简短的示例,nA=2, nB=3, nC=4 但我的真实数据多达数百个...

【问题讨论】:

  • 这可能是很多事情。请发布您的代码,尤其是循环。
  • 非常感谢您的评论。但是由于我对如何解决问题没有任何想法,所以我无法编写任何脚本..对此我感到非常抱歉。

标签: matlab find continuous


【解决方案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://www.mathworks.com/help/matlab/ref/interp1.html

【讨论】:

  • 哇....谢谢,非常感谢。问题已经解决了 !!你得到我的想法是天才!谢谢谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多