2012-09-18 37 views
0

我有一個時間序列的測量在水柱的不同深度。我將它們分成了單獨的單元格(稍後),並且需要一些關於如何完成以下操作的幫助:例如索引查找相應的數字

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'中給出。

我怎麼能做到這一點?

+2

你應該與凱特合作;她在相同的數據工作:http://stackoverflow.com/questions/12471727/logical-indexing-in-matlab;) –

+0

同意,我發現這是一個適合我的問題的例子 – Andy

回答

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超出了數據範圍,或者我認爲對數據的支持。當數據超出範圍時,您需要決定您想要執行的操作,或者可能不應該這樣做,因此應記錄錯誤;隨你便!如果您還有其他問題,請告訴我!