http://www.wave12.com/web/SigCon.asp?bCate=41&sCateName=%B9%A6%C4%DC%BD%E9%C9%DC&ID=143&CateName=wsChart4.5(DLL)

解决方案 »

  1.   

    难得遇到个搞统计的1 采样点不足时如何做数据拟合,
    (1)重采样,加密采样点,也就是时间间隔减小
    (2)视乎算法公式模拟,例如直线就好办,不存在采样不足,两点就够
    其他的话,用最近似的曲线画,例如贝塞尔
    2 采样点过多时,如何进行数据的选取
    这个好办,弃去部分采样点(不过这里也要用有效的规则)
    或者用不同的间隔取中间值(中间值不一定就是平均值,视乎算法确定)3 (可以不考虑)对于坏数据的清洗
    这个不知道你想怎样,坏数据可能需要模式识别(我的学习研究对象),原理比较麻烦
    不过也可以自定义数据范围,例如彩票开123456是不可能的,哈哈4 采样数据的曲线与理想曲线的对比分析,或者2组采样数据之间的比较(比如:在某点,2组数据的差过大就认为在该点有异常发生)
    其实做两条曲线叠加就很直观了5 图表的生成
    建议svg/vml等方式实现,视乎客户端或者执行端而定,这两个绝对比生成像素图有用
    并且可编辑/可编程6 生成图表中局部的放大
    (其中,5 6 可以以简单的方式实现,不一定要多么完美:P)
    如果svg/vml部放大基本不成问题,因为是矢量图
      

  2.   

    简单的说就是
    1、插值
    2、抽样、均值
    3、滑动均值
    4、方差复杂了就不属于php的范畴了,这是应用数学讨论的问题
    算法复杂时,也不是脚本级语言所能胜任的
      

  3.   

    网络程序好难做到“自学习”,因为web服务器的承受力不是为这个设计的
    基本上应该预设一些类型,根据数据指定图片的局部放大有一个最原始的办法
    把图片做成很大,客户端显示缩小的,然后通过javascript取原图的部分clip
    看上去就是放大的效果如果是流量分析方面,有很多现成的流量分析程序,不妨用来参考
      

  4.   

    具体情况要具体分析,的确也存在一些成熟的算法。可根据需要选用“比如采样点很多时,将采用哪种图表显示”
    着表示你对问题的理解是很粗浅的。选用何中种图表来展现数据并非随意的。图表局部放大问题
    这个问题应倒过来考虑。由于web方式中你不可能将精细的图表1:1的呈现在浏览器中
    实际呈现的是“缩略”方式的图表
    于是局部放大也就是重新生成局部的精细图表
    实际的数据是一个局域网的网络流量的采样数据
    假定每秒采样一次,那么日流量图就有24*60*60=86400个数据可用
    以折线图为例,横轴为时间
    全部显示至少需要86400象素宽的区域,就是八十多个屏幕宽。显然是不可取的
    于是你就需要减少横轴分辨率为分或小时
    方法可以是
    抽样 取每个0秒时刻的值作为该分钟的值,简单但不精确,因为那个时刻可能出现极大极小值
    均值 取60秒的平均值,作为该分钟的值,计算量不大,可能在分与分间出现阶跃
    滑动均值 去前n分到后n分的平均值,作为该分钟的值,计算量稍大,但可保证分与分之间平滑过渡
    其他的算法由于计算量较大,不宜在web方式中采用放大时,也就取需要的区段的值以较高的分辨率显示。
    注意,最多只能精确到秒,因为假定每秒采样一次
    用再高的分辨率就要“插值”了,这样也就是使曲线看上去“平滑”些,当然也有一定的参考价值
      

  5.   

    ...看来各位理论不错,但似乎缺乏实际考虑。
    不过,方法的可行性上倒是论述了一些,让我明白该如何选择了。呵呵。我最需要的是做这件事的资源,希望各位能提供一些:P感谢 huacha()也希望老大们给点有价值的资源:P
      

  6.   

    或许是我没有说清楚吧,
    数据源不是一个局域网,而是很多,是以每个这样的局域网络为单位的。这里就涉及到数据量的问题,因此采样的时间间隔和数据量就是一个互相矛盾的条件了。实际情况是采样点不可能很密集。:)目前2(唠叨老大),4(我想暂时先用最简单的方法),5(huacha())已经有了大致目标和方法,3暂时不考虑吧。。1,6其实是一个问题,自认还没有准确的答案,插值是肯定的,但是哪种插值方法即可行又能较准确的反映实际情况呢?仅仅是一个答案,当然这个不好定论,如果各位有好的链接地址或者资料名目,请告知,我想要得也仅此而已,谢谢:P