2012-02-15 91 views
0
clear all 
    data = rand(8760,1); 
    n=366; 
    time=linspace(1+1/24,n,(n-1)*24)'; 
     %day of year 
    daylims = ([100,300]); 

    [row1]=find(time > daylims(1) & time < daylims(2)); 

從上面的例子中,我試圖選擇'daylims'給出的e週期的數據,然後將這些數據放入一個對應'時間'的向量中。找到我需要的數據的行號後,我現在要做的就是圍繞「數據」,例如,第一行是2377,所以我想使行1:2377作爲南,最後一行是7175,所以我想使 行7175:結束爲南(結束是8760)。matlab添加到矢量

這可以很容易地通過手動移動值來完成,但我希望更有效的方法。如果我不清楚,請告訴我。

回答

1

我經常做這樣的:

good_data = (time > daylims(1) & time < daylims(2)); 
data(~good_data)=NaN; 

注意我不使用發現,而是邏輯索引。

0

您是否試過這種方法?

data(1 : 2377) = nan; 
data(7175 : end) = nan; 
+0

是的,我做到了,但我一直在尋找更復雜的方法。如果我需要爲更大的數據集做這件事,那麼這將非常耗時。 – Emma 2012-02-15 14:25:47