2012-02-15 90 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