在Matlab周末提取

时间:2014-06-13 02:39:58

标签: matlab weekday

我有一个矩阵" timeVectorDaily"那是364 x 5的大小。该矩阵具有十进制天数的数据。 例如

734870 734870.2 734870.4 734870.6 734870.8
734871 734871.2 734871.4 734871.6 734871.8

等等

我只需从" timeVectorDaily"中提取周末行。我编码以确定它是否是一个周末的方式是使用工作日函数返回表示星期日到星期六的整数1到7。阵列" arrayAllDay"这个信息是364 x 1的大小。 例如

1
2

等等

我只是进入了这个阶段。有人可以帮助我如何从这里开始吗?我需要为每个周末提取1 X 5(工作日函数返回1或7)

j = length(timeVectorDaily);
arrayAllDay = zeros(j,1);
counter = 0;
for m=1:j
    [arrayAllDay(m)] = weekday(timeVectorDaily(m));
    if arrayAllDay(m) == 1
        counter = counter+1;
    elseif arrayAllDay(m) == 7
        counter = counter+1;
    end
end

1 个答案:

答案 0 :(得分:1)

我们可以通过检查输入到此函数中的矩阵的第一列是否输出weekday1来查找7函数中的哪些元素在周末出现。完成此操作后,我们会从timeVectorDaily中选择哪些行。

没有进一步的麻烦:

arrayAllDay = weekday(timeVectorDaily(:,1));
loc = arrayAllDay == 1 | arrayAllDay == 7;
weekendRows = timeVectorDaily(loc,:);

arrayAllDay包含17的数字,用于告诉您该数字的星期几。 loc是一个逻辑数组,其中1表示该日落在一个周末,而0表示它没有。weekendRows。最后,M x 5将包含与周末对应的所有行。因此,这将生成M矩阵,其中i是与矩阵的第一列对应的周末总数。

BTW,指的是@Shai,你不建议使用j和{{1}}作为迭代变量,因为它们用于表示复数。请在此处查看此链接:Using i and j as variables in Matlab。这样做会影响这些复杂的变量,如果您稍后进行任何复杂的分析,您可能会得到不可预测的结果。