【问题标题】:matlab adding to a vectormatlab添加到向量
【发布时间】:2012-02-15 10:38:36
【问题描述】:
 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 周期的数据,然后将该数据拟合到对应于“时间”的向量中。找到我需要的数据的行号后,我现在要做的就是用 nans 包围“数据”,例如第一行是 2377 所以我想将第 1:2377 行设置为 nan 并且最后一行是 7175 所以我想 第 7175 行:以 nan 结尾(结尾为 8760)。

这可以通过手动移动值来轻松完成,但我希望有更多 有效的方法。如果我不清楚,请告诉我。

【问题讨论】:

    标签: matlab vector


    【解决方案1】:

    我经常这样做:

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

    请注意,我不使用查找,而是使用逻辑索引。

    【讨论】:

      【解决方案2】:

      你试过这种方法吗?

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

      【讨论】:

      • 是的,我这样做了,但我一直在寻找更复杂的方法。如果我需要为更大的数据集执行此操作,那将非常耗时。
      猜你喜欢
      • 1970-01-01
      • 2015-02-06
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多