索引以找到相应的数字

时间:2012-09-18 14:59:07

标签: matlab indexing

我在水柱的不同深度进行了一系列测量。我已将它们分成单个单元格(以后再说),并需要一些帮助来完成以下内容:例如

    time = [733774,733774,733775,733775,733775,733776,733776];
    bthD = [20,10,0,15,10,20,10];
    bthA = (1000:100:1600);
    %Hypsographic
    Hypso = [(10:1:20)',(1000:100:2000)'];
    d = [1,1.3,1,2.5,2.5,1,1.2];
    data = horzcat(time',bthD',d');
    uniqueTimes = unique(time);
    counts = hist(time,uniqueTimes);
    newData = mat2cell(data,counts,length(uniqueTimes));

所以,在newData中我有三个单元,对应于不同的测量天数,在每个单元格中我有newData(:,1)是时间,newData(:,2)是深度,newData(:,3)作为衡量标准。我想找出细胞中每个深度的区域,不同深度的区域在变量'Hypso'中给出。

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

你的问题表达非常好!很容易理解你需要的东西。您所需要的只是函数interp1。我假设使用Hypso的第一列作为深度,第二列作为区域。您可以使用interp1函数的向量化能力在一次调用中查找所有值:

areaAtDepth = interp1(Hypso(:,1),Hypso(:,2),bthD)

areaAtDepth =

  Columns 1 through 6

        2000        1000         NaN        1500        1000        2000

  Column 7

        1000

您会注意到输出第三列中的Nan。这是因为它的相关深度0超出了数据的范围,或者支持我认为的数据。当数据超出范围时,您需要确定要执行的操作,或者可能永远不应该这样做,因此应记录错误;由你决定!如果您还有其他问题,请与我们联系!