如何解决如何对另一个不同大小的日期时间列表进行逻辑测试? MATLAB
我需要创建一个bin列表,在其中针对不同大小的另一个datetime列表测试一个datetime列表。 基本上,我有一个较大的列表(tb_date-81504个样本),并且想知道一些日期时间(较小的列表-(useful_date-42443个样本))在哪里-如果较小的列表中没有该日期,则返回零;并且如果存在,则返回1-用tb_date的大小(由0或1s组成)创建一个新列表(不存在项1、0,项2存在,以此类推。)。 我做了:
[m,n] = size(tb_date);
[i,j] = size(useful_date);
tb_useful_ind = []
for k = 1:n
for i = 1:j
if tb_date(k) == useful_date(j)
tb_useful_ind(k) = 1;
else
tb_useful_ind(k) = 0;
end
end
end
然后返回tb_date中的索引:
date_indexes = find(tb_useful_ind);
但是不可能这样使用-它给我返回了错误的值,并且还花了很多时间。(运行9小时,只给了我5k个元素)。 请问您如何建议我这样做?
非常感谢您。
更新:我尝试使用相交:
>> intersect(tb_date,datetime_day); useful_date2 = ans;
>> B = tb_date == useful_date2;
Data inputs must be the same size,or any of them can be a scalar.
也尝试过:
ind=find(tb_date==useful_date);
Data inputs must be the same size,or any of them can be a scalar.
我需要获取一个与tb_date大小相同的列表(81504),其中检查tb_date的每个元素是否在有用的日期中,如果不是,则返回0,如果是,则返回1 。例如:
tb-date = '01-Jan-2016 00:00:00' '01-Jan-2016 00:15:00' '01-Jan-2016 00:30:00' '01-Jan-2016 00:45:00' '01-Jan-2016 01:00:00' '01-Jan-2016 01:15:00' '01-Jan-2016 01:30:00' '01-Jan-2016 01:45:00' '01-Jan-2016 02:00:00' '01-Jan-2016 02:15:00' '01-Jan-2016 02:30:00' '01-Jan-2016 02:45:00' '01-Jan-2016 03:00:00'
useful_date = '01-Jan-2016 01:00:00' '01-Jan-2016 01:15:00' '01-Jan-2016 01:30:00'
大致来说,我需要的输出是:
date_indexes =(0 0 0 0 1 1 1 0 0 0 0 0 0)
解决方法
您可以执行set intersect来查找公用值,这将不包含任何重复值。例如,我将使用随机生成的datetime值:
>> timepoint = datetime("now")
timepoint =
datetime
21-Aug-2020 00:16:21
>> dates_1 = reshape(randi(30,10) + timepoint,[1 100]); dates_2 = reshape(randi(30,[1 100]);
>> intersect(dates_1,dates_2)
ans =
29×1 datetime array
22-Aug-2020 00:16:21
23-Aug-2020 00:16:21
24-Aug-2020 00:16:21
25-Aug-2020 00:16:21
26-Aug-2020 00:16:21
27-Aug-2020 00:16:21
28-Aug-2020 00:16:21
...
编辑:
如果要定位到它们的位置,则可以使用find
,循环遍历有用的datetime数组中的每个元素,然后运行find(tb_dates == element)
。另外,相交还可以选择在两个数组中返回两个附加参数[C,ia,ib] = intersect(___)
,它们是公共值的索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。