【发布时间】:2019-02-02 12:39:42
【问题描述】:
我在使用以下参数创建函数时遇到了一些问题:
Ndata = extperiod(data, year, month,time)
数据是一个3列的表格,从左到右分别是:
year/month/date, time, temperature
我的目标是创建一个函数,它可以提取时间和年/月,与日期无关,并找到它对应的温度。
- 我需要避免使用
for循环 - 有人建议我使用
floor和find,其中floor(YYYYMMDD/100) = YYYY*100 + MM,我想以某种方式将它们集成到我的功能中。
我之前找到了一种从数据中提取给定日期的所有温度的方法,如下所示:
k = find(data(:,1)==19750101);
data(k(1):k(end),3)
我正在尝试合并此方法,但我认为提示“floor(YYYYMMDD/100)”让我有点失望。
我尝试过使用find(data(:,1)==floor(YYYYMMDD/100)),我认为我会得到具有特定年份和月份的所有日期。例如:
find( data(:,1) == floor(19660101/100) )
我认为这会给我列向量中值为 196601 的所有点。但事实并非如此。
我可以尝试什么不同的方法?
【问题讨论】:
-
从使用
for循环开始!它们很容易掌握,您可以编写有效的代码。然后,您可以向我们展示一些代码作为minimal reproducible example,其中包含您的数据表的子集、预期输入和相应的预期输出。向量化现有代码以删除for循环然后是最后的语义。除非这是为了作业(在这种情况下,您可能会得到同学/主管的帮助),否则没有理由过早地避免循环。
标签: matlab function datetime filtering vectorization