需要单元测试自己写的识别特殊波峰的算法,所以必须构造波形数据。
一开始是自己在控件上手绘波形,虽然这种方便,但是能绘制的点太少,每次手画显得麻烦。
过后,又采用随机数构造波峰,这种虽说能构造很多点,产生很多随机的波峰波谷,但是对于特殊的波峰无法进行预期。
最后我就想到这种方法,先构造出一定范围的样例峰谷数据,然后可以对这些数据进行一个随机增幅,
值限定在一定范围,最后在构造需要识别的特殊波峰,并不对这个特殊波峰进行增幅,
这样自己就构造出了预期的值,单测的时候就能判断了。
 
具体的办法,我是把样例数据分成 上升的数据段3组,每组10个点,下降的数据段3组,每组10个点,
可以在每个升降组构造一些小型的峰谷,这样可以在普通波峰上形成小型的波峰。
一对升降就是一个波峰,也可以先降后升这种组合,还有预期数据(特殊波峰) 一组, 5个点,其中有个特殊值是预期波峰。
构造好样例数据之后,再开一个循环,循环次数根据对数据点的个数要求自己订
,每一次循环就把一对升降组加入集合,这个升降组可以是随机抽取,自己也可以多定义几组升降组,增加波形的随机性。
这样经循环一次,就形成一个波峰,这样也能安排在特定的位置出现特殊波峰。
然后定义一个增幅值*(1到2的随机值的平方),因为平方函数的曲线变化更大,相对与立方来说,变化也不是很大,
如果是立方,波形振幅都很大了。我们只对一般的升降组进行增幅,每次循环只进行一次增幅值的改变,这样既能保持波峰的形态,也能得到更加像随机产生的波形。
 
当然也可以进行 升降数据的混合组合,产生更加随机的效果。
最后 应该用gdi+在控件上把数据画出来, DrawLine 方法可以满足要求。
 
最后再做一个导出数据点集合的功能,直接newtowsoft保存txt文件,这样最后就能再单元测试中使用数据了。

这张图是没加增幅的情况,所以不够随机。

C# 【思路】分享 构造可进行单元测试的波形数据的更多相关文章

  1. 通过Dapr实现一个简单的基于.net的微服务电商系统(二十)——Saga框架实现思路分享

    今天这篇博文的主要目的是分享一下我设计Saga的实现思路来抛砖引玉,其实Saga本身非常的类似于一个简单的工作流体系,相比工作流不一样的部分在于它没有工作流的复杂逻辑处理机制(比如会签),没有条件分支 ...

  2. HyperLedger Fabric 学习思路分享

    HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常 ...

  3. [技术分享]借用UAC完成的提权思路分享

    借用UAC完成的提权思路分享 背景 UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在Windows Vista中引入的新技术,它要求用户在执行可能会影响计算机运 ...

  4. 从二进制数据流中构造GDAL可以读取的图像数据(C#)

    在上一篇博客中,讲了一下使用GDAL从文件流中构造一个GDAL可以识别的数据来进行处理.原以为这个接口在C#中没有,仔细看了下GDAL库中源码,发现C#版本也有类似的函数,下面是GDAL库中的一个C# ...

  5. 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)

    Hibernate的主要功能及用法: Ⅰ.Hibernate封装了JDBC,使Java程序员能够以面向对象的思想对数据库进行操作 Ⅱ.Hibernate可以应用于EJB的J2EE架构,完成数据的持久化 ...

  6. .net点选验证码实现思路分享

    哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...

  7. openvpn通过ldap或ad统一认证解决方案思路分享

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/986933 缘起:成 ...

  8. 通过JS逆向ProtoBuf 反反爬思路分享

    前言 本文意在记录,在爬虫过程中,我首次遇到Protobuf时的一系列问题和解决问题的思路. 文章编写遵循当时工作的思路,优点:非常详细,缺点:文字冗长,描述不准确 protobuf用在前后端传输,在 ...

  9. 技术分享 | Update更新慢、死锁等问题的排查思路分享

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 一.简介 在开始排错之前我们需要知道 Update 在 MySQL 中的生命周期 ...

  10. 开源图编辑库 NebulaGraph VEditor 的设计思路分享

    本文首发于 NebulaGraph 公众号 NebulaGraph VEditor 是一个拥有高性能.高可定制的所见即所得图可视化编辑器前端库. NebulaGraph VEditor 底层基于 SV ...

随机推荐

  1. Python数据分析 numpy 笔记

     B站课链接:[Python数据分析三剑客:NumPy.Pandas与Matplotlib] https://www.bilibili.com/video/BV1Yb4y1g7SV/?p=16& ...

  2. Sample Post

    HTML Elements Below is just about everything you'll need to style in the blog. Heading 1 Heading 2 H ...

  3. Prometheus Operator与kube-prometheus之二-如何监控1.23+ kubeadm集群

    简介 系列文章: 标签 - Prometheus - 东风微鸣技术博客 (ewhisper.cn) Prometheus Operator 的上一篇: Prometheus Operator 与 ku ...

  4. HarmonyOS应用性能与功耗云测试

    性能测试 性能测试主要验证HarmonyOS应用在华为真机设备上运行的性能问题,包括启动时长.界面显示.CPU占用和内存占用.具体性能测试项的详细说明请参考性能测试标准. 性能测试支持Phone和TV ...

  5. C#判断窗体是否被遮挡 - 开源研究系列文章

    上次发布了托盘窗体的显示与隐藏的博文:,但是在测试窗体最大化的时候发现窗体没有隐藏,调试了下知道是窗体是否被遮挡这个函数的判断有问题.于是就研究了该代码,然后联系了该操作类的作者,也是博客园的园友,然 ...

  6. 【高级RAG技巧】在大模型知识库问答中增强文档分割与表格提取

    前言 文档分割是一项具有挑战性的任务,它是任何知识库问答系统的基础.高质量的文档分割结果对于显著提升问答效果至关重要,但是目前大多数开源库的处理能力有限. 这些开源的库或者方法缺点大致可以罗列如下: ...

  7. 在Windows电脑上快速运行AI大语言模型-Llama3

    概述 近期 Meta 发布了最新的 Llama3 模型,并开源了开源代码.Meta Llama 3 现已推出 8B 和 70B 预训练和指令调整版本,可支持广泛的应用程序. 并且 Llama 3 在语 ...

  8. dva使用yarn编译出错

    1. 报错信息 ./src/models/example.jsModule build failed: TypeError: /Users/user/Desktop/learn-code/10.Rea ...

  9. 【笔记】go语言--结构体,方法,包与封装

    [笔记]go语言--结构体,方法,包与封装 结构体和方法 面向对象 go语言仅支持封装,不支持继承和多态 go语言没有class,只有struct //结构的定义 type TreeNode stru ...

  10. 使用 Databricks 进行营销效果归因分析的应用实践【Databricks 数据洞察公开课】

    简介: 本文介绍如何使用Databricks进行广告效果归因分析,完成一站式的部署机器学习,包括数据ETL.数据校验.模型训练/评测/应用等全流程. 作者:冯加亮   阿里云开源大数据平台技术工程师 ...