社区
C#
帖子详情
C#中如何判断曲线趋势?
xiaofeng54
2010-04-13 03:52:45
在程序中建有一个变量temp和一个数组float[]=new myarray[10],在timer下,temp每秒更新一次值,myarray[9]=temp,然后
for(int i=0;i<=8;i++)
{
myarray[i]=myarray[i+1];
}
这样子数组myarray中就由temp最新的十个值所填充,
现在的问题就是如何才能判断出myarray中的10个值连成的曲线是一个逐渐上升然后下降的波峰,不知道有没有成熟的算法或者好的建议,希望大家帮助我!
例如数据为:2,2,2,3,5,8,9,7,8,6,4,2,1,1,则判断为产生了一个满足条件的曲线。
图示:
如何判断下面链接图中的波峰
http://images.google.com.hk/imglanding?q=C%23%20%E6%9B%B2%E7%BA%BF&imgurl=http://images.cnblogs.com/cnblogs_com/kenblove/Curve4.jpg&imgrefurl=http://www.cnblogs.com/lr21shiji/articles/590972.html&usg=__KPN11pLF38YlPWUfdce-jbofk4Y=&h=500&w=900&sz=35&hl=zh-CN&um=1&itbs=1&tbnid=T60oKSZalQTV2M:&tbnh=81&tbnw=146&prev=/images%3Fq%3DC%2523%2B%25E6%259B%25B2%25E7%25BA%25BF%26um%3D1%26hl%3Dzh-CN%26newwindow%3D1%26safe%3Dstrict%26client%3Daff-avalanche%26sa%3DN%26channel%3Dsearchbox%26tbs%3Disch:1&um=1&newwindow=1&safe=strict&client=aff-avalanche&sa=N&channel=searchbox&tbs=isch:1&start=9#tbnid=T60oKSZalQTV2M&start=13
...全文
901
14
打赏
收藏
C#中如何判断曲线趋势?
在程序中建有一个变量temp和一个数组float[]=new myarray[10],在timer下,temp每秒更新一次值,myarray[9]=temp,然后 for(int i=0;i<=8;i++) { myarray[i]=myarray[i+1]; } 这样子数组myarray中就由temp最新的十个值所填充, 现在的问题就是如何才能判断出myarray中的10个值连成的曲线是一个逐渐上升然后下降的波峰,不知道有没有成熟的算法或者好的建议,希望大家帮助我! 例如数据为:2,2,2,3
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaofeng54
2010-04-13
打赏
举报
回复
[Quote=引用 11 楼 zsuswy 的回复:]
我觉得这个好办
比如一个序列,我们对他生成一个新的序列,如果后一个>前一个大就算1,<就算-1,如果相等就看前面一个是1还是-1,前面没有的时候算1。
例如:2,2,2,3,5,8,9,7,8,6,4,2,1,1
得到的是 1,1,1,1,1,1,-1,1,-1,-1,-1,
然后把相邻的进行合并,于是得到 1,-1,1,-1
根据这个序列,就很算波动次数了,其它的再慢慢发散吧。这个过程……
[/Quote]
我觉得这样子好像还是不能确切的判断出哪个点出现了异常,哪个点是波峰哦,我在想能否利用数学来解决这个问题呢?例如求导?微积分?等等方法~~~这方面我不是很熟悉,不知道大家有什么意见和建议~~
zhoudan3986226
2010-04-13
打赏
举报
回复
你取每个波峰和波谷中间的点 再根据那些点就可以判断了
zsuswy
2010-04-13
打赏
举报
回复
我觉得这个好办
比如一个序列,我们对他生成一个新的序列,如果后一个>前一个大就算1,<就算-1,如果相等就看前面一个是1还是-1,前面没有的时候算1。
例如:2,2,2,3,5,8,9,7,8,6,4,2,1,1
得到的是 1,1,1,1,1,1,-1,1,-1,-1,-1,
然后把相邻的进行合并,于是得到 1,-1,1,-1
根据这个序列,就很算波动次数了,其它的再慢慢发散吧。这个过程还可以计算权重值,这样可以记录波动的大小。我觉得可行。
xiaofeng54
2010-04-13
打赏
举报
回复
[Quote=引用 9 楼 wanghui0380 的回复:]
呵呵,这个问题你最好去问技术派的股民
估计随便挑一个就能给你说个一二三四五出来
[/Quote]
哈哈,那倒是,可是怎样转换为算法和编程语言呢?
wanghui0380
2010-04-13
打赏
举报
回复
呵呵,这个问题你最好去问技术派的股民
估计随便挑一个就能给你说个一二三四五出来
xiaofeng54
2010-04-13
打赏
举报
回复
[Quote=引用 5 楼 zsuswy 的回复:]
1,1,1,2,3,4,5,6,1000,1
---------------------
1,1,1000,2,3,1000,5,6,1000,1
------
我想问下这两种,算不算符合你的要求的??
[/Quote]
这样吧,我把问题再明确一下,一般正常情况的数据在50-55之间,异常范围在56-80之间,小波动范围在0-2之间。
xiaofeng54
2010-04-13
打赏
举报
回复
[Quote=引用 5 楼 zsuswy 的回复:]
1,1,1,2,3,4,5,6,1000,1
---------------------
1,1,1000,2,3,1000,5,6,1000,1
------
我想问下这两种,算不算符合你的要求的??
[/Quote]
数据1可以认为有1次波动
数据2可以认为有3次波动
xiaofeng54
2010-04-13
打赏
举报
回复
[Quote=引用 3 楼 zsuswy 的回复:]
问题就在于这里啊,你说的这种小的波动在一个什么范围内???你怎么去衡量这个波动是“小”的而不是“大”的?? 你应该有你的判断标准啊。
[/Quote]
这个我会在程序里留出参数设置接口,现在可以先用一个经验值代替,先随便写一个,例如myarray[i+1]-myarray[i]的绝对值小于2则认为在小波动范围之内。
zsuswy
2010-04-13
打赏
举报
回复
1,1,1,2,3,4,5,6,1000,1
---------------------
1,1,1000,2,3,1000,5,6,1000,1
------
我想问下这两种,算不算符合你的要求的??
xiaofeng54
2010-04-13
打赏
举报
回复
我目前的想法是对myarray[0]-myarray[5]取平均值放在 avg 里面,如果连续三次myarray[9]-myarray[8]>0,并且myarray[9]-avg>3(随便写的,也可以为其他经验值),则判断曲线在上升。不知道这样可不可取。
如果可取,后面再怎么判断波峰和下降我就不知道怎么写了~~~~唉,好像有点麻烦。
zsuswy
2010-04-13
打赏
举报
回复
问题就在于这里啊,你说的这种小的波动在一个什么范围内???你怎么去衡量这个波动是“小”的而不是“大”的?? 你应该有你的判断标准啊。
xiaofeng54
2010-04-13
打赏
举报
回复
[Quote=引用 1 楼 zsuswy 的回复:]
:2,2,2,3,5,8,9,7,8,6,4,2,1,1
-------------------------------
我注意到中间的 9,7,8,6
意思就是说你这个还不一定是一个非常规整的过程,因为从2上升到9后,又下降到7,然后又上升到8,然后又开始下降。。。 也就是说中间还有其它波动。。。。
是不?
[/Quote]
是的,因为是实时监控外部设备传入的数据,所以有可能会出现这种小波动的,但是总体的趋势是形成一个波峰。
zsuswy
2010-04-13
打赏
举报
回复
:2,2,2,3,5,8,9,7,8,6,4,2,1,1
-------------------------------
我注意到中间的 9,7,8,6
意思就是说你这个还不一定是一个非常规整的过程,因为从2上升到9后,又下降到7,然后又上升到8,然后又开始下降。。。 也就是说中间还有其它波动。。。。
是不?
C#
基于DevExpress做的画
趋势
曲线
图
C#
基于DevExpress的chartcontrol做的画
趋势
曲线
图:不断添加数据点,以
曲线
的方式显示在窗体上。DevExpress的chartcontrol默认是横坐标不断缩放,显示不太符合直观。改成了固定的横坐标,然后从左往右逐个添加数据点...
C#
Winform数值实时
曲线
(完整示例)
C#
实现显示实时数据,并形成
曲线
,保存数据,完整的项目代码
C#
基于DevExpress做的快速从数据文件读取数据并画
趋势
曲线
图
DevExpress的chartcontrol从数据文件读取数据然画画点,正常操作是:打开文件,逐个读取,逐个解析,然后逐个添加到图形控件上,经测试这个方法来加载数据文件速度非常慢,一个几十k的文件加载时间超过1分钟,不可...
C#
Winform 多
曲线
实时
趋势
图
C#
Winform 多
曲线
实时
趋势
图,可自行修改成.net控件。
Chart实现实时
趋势
图以及历史
趋势
图
主要介绍如何用
C#
中
自带的Chart控件实现添加sin
曲线
、cos
曲线
、绘制鼠标运行轨迹,以及监控实时
趋势
的功能。
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章