求编程自动找出曲线上两个值并进行减法计算

2019-07-17 14:00发布

如图所示,在一段曲线中,有一个峰值和一个稳定值,我想编写程序找出这两个点,并进行减法运算。因为纵坐标峰值到稳定值的时间是一个定值T,所以我先通过索引找出最大值索引位置,然后找出对应的横坐标(时间)位置,并指向该位置所对应的时间值t,再把时间值t与定值T相加,即(t+T)S后的位置,并作为索引找出纵坐标所对应的值,也就是稳定值,但是时间坐标有时候会不准,所以这种方法存在风险,故想看哪位大神能不能用斜率找出拐点位置的方法,跪求,这个问题困扰我很久了!谢谢
索引方法(存在风险) 索引方法(存在风险)
数据波形 数据波形
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
zengzhaonan
1楼-- · 2019-07-18 10:26
 精彩回答 2  元偷偷看……
Sylvain
2楼-- · 2019-07-18 11:09
我想了一下,Y1可以使用反馈节点或者移位寄存器来进行判定,前一次数值比现在的数值大,且现在的数值范围在0~0.25之间(大致吧,这个你自己),此时把蓝 {MOD}曲线的Y1值赋值给一个变量。Y2的话,可以像楼上说的那么做,或者计算前后两次的差值,大于特定值时,取前一次的值(即Y2)。
大致是这个思路,但是你可以用用看其他的数据分析Vi什么的,我不常用,所以不好说。
卡农5313
3楼-- · 2019-07-18 15:58
xie330821 发表于 2018-1-24 23:54
不知道你电压值与电流值是不是一一对应的关系,如果是的话,我有写一个。如果不是不懂怎么做,曲线处理不怎么用。附我写的一个吧,你的数据不是一一对应,求Y1可能不准,Y2我觉得应该没问题,思路就是先找到数组的最大值,在从最大值处获取下降沿的数据,在两两相减,得出一个差异数组,其中最大值即为Y2的那个点。 ...

感谢前辈的指点和小例子,谢谢,也感谢其他前辈的妙招和真知灼见
今天自己也在思考到底该怎么做,冥思苦想和四处讨教,终于有一点眉目了,但还没验证,我把我的思路简单分享下:
(1)为了能找到Y1,首先确定电流那个为0的位置,我就用搜索一维数组的方式,找到电流第一个为0的点,但是问题又来了,电流初始刻也很多点为0,所以得把前面一段0给填充了,故我先删除前面为0的点,然后再填进去不为0的数。再通过搜索一维数组的方式确定电流为0,即Y1的位置,最后索引这个位置的元素。
(2)Y2的值,就像前辈那样,找差值最大的点。
删除和填充.jpg
xie330821
4楼-- · 2019-07-18 19:10
你这样说的话,我写的那个就是求第一个下降0的位置,你不要去删除第一个零,还是先找出数组中的最大值,在从最大值处过去下降沿的数组,在找第一个零。
卡农5313
5楼-- · 2019-07-18 23:40
xie330821 发表于 2018-1-27 08:22
你这样说的话,我写的那个就是求第一个下降0的位置,你不要去删除第一个零,还是先找出数组中的最大值,在从最大值处过去下降沿的数组,在找第一个零。

没太听懂您的意思,我还没仔细看您的编的程序,你的方法应该是没错的,我回头再参考参考您的程序
关于我的:电流(红 {MOD}线)下降处第一个0是我要找的呢,我的方法是:搜索一维数组。为了避免误找其他点的0零位置,所以我暂且把前面的0都先变成非0数值,再利用搜索一维数组去找下降处第一个0
谢谢前辈
xie330821
6楼-- · 2019-07-19 01:42
 精彩回答 2  元偷偷看……

一周热门 更多>