找到上升点和下降点

5次浏览(过去30天)
米尔科Tomic
米尔科Tomic 2022年6月30日
编辑: 凯文·霍利 2022年6月30日
嗨,我需要从向量中提取2个红点的时间戳值。
有人知道解决这类问题的方法吗?

接受的答案

凯文·霍利
凯文·霍利 2022年6月30日
编辑:凯文·霍利 2022年6月30日
你需要知道如何在给定的原始数据中找到这些点吗?如果是,请参见下面的方法。
通过求左边的差值来求斜率,然后求绝对值。找出大于特定阈值的斜率(数据点)。注意,如果你只关心正斜率(在你提供的例子中左边的两个红点),那么不要取绝对值。从右边做同样的事情。找到左方法和右方法之间常见的已识别的数据点。
X = 1:11;
Y = [0 0 0 0.3 0.8 1 1 1 0.5 0 0];
数字
散射(x, y,“填充”
阈值= 0.1;
X1 = x(2:结束);
Y1 = abs(diff(y));
X_left = x1(y1>阈值)
x_left = 1×5
4 5 6 9 10
X2 = flip(x(1:end-1));
Y2 = abs(diff(flip(y)));
X_right = x2(y2>阈值)
x_right = 1×5
9 8 5 4 3
Values = intersect(x_left,x_right)
值= 1×3
4 5 9
数字
散射(x, y,“填充”
持有
散射(值,y(值),“填充”“r”
用可视化方法显示:
数字
散射(x, y,“填充”
从左边靠近
数字
X1 = x(2:结束);
Y1 = abs(diff(y));
X_left = x1(y1>阈值)
x_left = 1×5
4 5 6 9 10
散射(x1, y1,“填充”
从右侧接近
数字
X2 = flip(x(1:end-1));
Y2 = abs(diff(flip(y)));
X_right = x2(y2>阈值)
x_right = 1×5
9 8 5 4 3
散射(x2, y2,“填充”
找出x_left和x_right之间共有的值。
Values = intersect(x_left,x_right)
值= 1×3
4 5 9
数字
散射(x, y,“填充”
持有
散射(值,y(值),“填充”“r”

更多答案(1)

乔纳斯
乔纳斯 2022年6月30日
编辑:乔纳斯 2022年6月30日
你可以用微分信号的阈值来识别这些点,比如
find(abs(diff(x)) > someThresholdValue)+1
因为我没有看到y轴,我不能建议一个阈值

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的