【问题标题】:If loop to find date where values are bigger than certain threshold如果循环查找值大于某个阈值的日期
【发布时间】:2019-12-01 19:16:38
【问题描述】:

我正在为我的 Matlab 作业而苦苦挣扎。

我有一个名为“date”的日期时间数组和两个双精度数组(X 和 Y),其中包含每个时间步的测量值。

我必须完成以下任务:

选择 X 和 Y 均大于其各自 Z 值的所有时间步长。将这些时间步长的日期存储在一个新变量中。将其命名为“C”

Z 和 Y 是 52584x1 双向量,date 是格式为 52584x1 日期时间 (dd.MM.yyyy hh:mm) 的向量

我试过了:

%Some Dummy Data:
Y = 1:8:80
X = 2:4:40
t1 = datetime(2013,11,1,8,0,0)
t2 = datetime(2013,11,10,8,0,0)
date = t1:t2

Z = 8;

for i = length(date) 
    if X(i) > Z && Y(i) > Z
         C=date(i)
    end
end

我猜C=date(i)有问题

感谢您的帮助!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    我猜你需要的可能如下所示:

    Z = 8;
    for i = 1:length(date) 
        if X(i) > Z && Y(i) > Z
             C(end+1)= date(i);
        end
    end
    

    alternativeC = date((X>Z)& (Y>Z))C = date(min([X;Y],[],1) > Z) 是比使用 for 循环更有效的解决方案

    【讨论】:

    • 感谢您的回答,这看起来好多了。但是,这给了我一个空数组...
    • @Axel.Schweiß 请显示一些数据,否则我不知道这些变量包含什么
    • 我试图指定数据。但是我怎样才能展示它们呢?上传 .txt 文件?
    • @Axel.Schweiß 你可以为你的问题的玩具示例创建一些假数据,而不是使用巨大的真实数据集
    • @Axel.Schweiß 和你的虚拟数据,我不认为C 是一个空输出......我不知道你在尝试我的时候使用的阈值Z代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多