为何使用find函数筛选特定日期范围返回空向量而非目标向量?
问题原因及解决办法
嘿,这个问题的根源一眼就能看出来——你的日期筛选逻辑完全搞反了!
你写的条件是:
find(date<='01-Apr-2013 00:00:00' & date>'01-May-2013 00:00:00')
这个条件要求日期同时满足早于/等于2013年4月1日,且晚于2013年5月1日,这在时间线上根本不可能存在,自然会返回空的索引向量啦。
正确的解决步骤:
- 首先明确你的目标:你应该是想提取2013年4月1日到5月1日之间的日期(注意边界是否包含端点)
- 修正逻辑条件:如果要的是「包含4月1日、但不包含5月1日」的日期范围,把条件的符号和日期顺序调整过来:
% 正确的条件写法 target_indices = find(date >= '01-Apr-2013 00:00:00' & date < '01-May-2013 00:00:00'); % 提取目标日期向量 target_dates = date(target_indices); - 额外提醒:如果你的
date是原始字符串数组,建议先转换成datetime类型再做比较,避免字符串格式带来的意外错误:date = datetime(date, 'InputFormat', 'dd-MMM-yyyy HH:mm:ss');
内容的提问来源于stack exchange,提问作者MiVi
相关产品推荐
相关产品推荐

