如何判断两条曲线走势是否一致(200分)

  • 主题发起人 主题发起人 子筠
  • 开始时间 开始时间

子筠

Unregistered / Unconfirmed
GUEST, unregistred user!
判断两条曲线是否一致:
标准曲线 t为横轴,表时间
t0:起点,y轴值为零
t0-t1:上升,
t1:第一次峰值
t1-t2:下降,
t2:第一次谷值
t2-t3:上升,
t3:第二次峰值
t3-t4:平稳,
t4:基本和第二次峰值相同
t4-t5:下降,
t5:终点,y轴值为零
要求所得曲线和标准曲线走势相同,否则即报错,如果在某一段,有一个值发生异常,可以忽略,如

果相连续的两点发生异常,则报错

我是个半路出家的程序员,没经过专业的计算机各方面知识的学习,从年前忙到现在,始终没理出头
绪来。下个月,项目就要现场运行了,请各位高手帮帮忙,谢谢了,能否给出具体思路,最好源码。

真的很感谢
 
问题是否描述清楚?
时间点只有,t0->t5吗?中间是否有更多的点?
 
不好意思,可能是我没说清楚,曲线共分为5段,t0,t1,t2,t3,t44,t5 只是表示每一段的段值
 
如你所描述的要求,问题不难吧。
 
对高手来说应该不难,可是我不会呀,所以对我来说就很难了
 
“如何判断两条曲线走势是否一致”是一个理论问题,算法不是主要问题。
值得考虑的是,按你的描速去判断两条曲线走势是否一致,是否合适。
 
不知道按照您的意思,有什么好的方法,如果是的话,不妨教教我
 
我搞过一些统计分析,判断两条曲线走势,我的做法是离散为两组数据,求两组数的相关性
判断相关是否显著,显著则认为两条曲线走势统计意义上是一致的,对于你的实际问题是否有意义
 
如果是连续的曲线就比较困难。
若是间断的,做个循环判断一下就可以了。
 
我是判断某装置是否运行正常,第一次投入运行的时候,将它的运行曲线作为标准曲线,以后运行一次,就判断其运行曲线是否正确,
我从事电力系统方面的软件开发时间不长,按照我得理解,就只能使这样了,不知各位高手有何高见,小女子这厢先谢了
 
不了解你的专业要求,如果认为你现在的判据是合适的,可以做下去,经实践检验看是否合适,
不合适再修改。你的描述已经清楚了,算法应没问题。如你不能完成,可把数据寄给我,帮你
做好(没有数据不好做)。linsb3031@163.com
 
linsb:谢谢,信已发到你的信箱,分数等会再给
 
用两个array of TPoint进行比较.
var
Source: array of TPoint;//每个TPoint保存一个点的坐标, X为时间
Target: array of TPoint;

假设Source和Target都已经初始化并赋值且长度一致.
function GetStatus: Boolean;
var
i: Integer;
Flag: Boolean;
begin
Result := True; //假设未出错
for i := 0 to Length(Source) - 1 do
if Source.Y <> Target.Y then //此处可根据要求调整.
begin
if Flag then
begin
Result := False; //连续出错
Break;
end
else
Flag := True; //出错一次
end
else
Flag := False;
end;

不知以上是否合你的要求?(未经测试)
 
谢谢,我试试
 
需要靠路以下几个问题:
1。计算结果的精度。差多少才算不一致,
2。计算参数(采样点)的精度,多远去一个时间才合适。
const float EXPI 0.001
for (UINT i=0; i<=10000; i++) {
usrY=usrFunc(X);
stdY=stdFunc(X);
if (abs(usrY-stdY)<= EXPI){
Record = True ;
}
}

......
 

Similar threads

后退
顶部