我有一个大小为 364 x 5 的矩阵“timeVectorDaily”。该矩阵具有十进制天数形式的数据。
例如
734870 734870.2 734870.4 734870.6 734870.8
734871 734871.2 734871.4 734871.6 734871.8
so on
我只需要从“timeVectorDaily”中提取周末行。我编写代码来确定是否是周末的方法是使用 weekday 函数,该函数返回代表星期日到星期六的整数 1 到 7。大小为 364 x 1 的数组“arrayAllDay”包含此信息。
例如
1
2
so on
我才到了这个阶段。有人可以帮助我如何从这里继续吗?我需要提取每个周末的 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
我们可以找出其中的哪些元素weekday
函数在周末通过检查矩阵的第一列输入到该函数时是否输出1
or a 7
。一旦我们这样做了,这将告诉我们可以从中选择哪些行timeVectorDaily
.
无需再费周折:
arrayAllDay = weekday(timeVectorDaily(:,1));
loc = arrayAllDay == 1 | arrayAllDay == 7;
weekendRows = timeVectorDaily(loc,:);
arrayAllDay
包含来自的数字1
to 7
告诉您该数字属于一周中的哪一天。loc
是一个逻辑数组,其中1
表示这一天是周末并且0
哪里没有。最后,weekendRows
将包含与周末对应的所有行。因此,这将产生一个M x 5
矩阵,其中M
是与矩阵第一列对应的周末总数。
顺便说一句,指的是@Shai,不建议您使用i
and j
作为迭代变量,因为它们用于表示复数。请参阅此处的链接:在 Matlab 中使用 i 和 j 作为变量 https://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in-matlab。这样做会掩盖这些复杂的变量,如果您稍后进行任何复杂的分析,您可能会得到不可预测的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)