需要单元测试自己写的识别特殊波峰的算法,所以必须构造波形数据。
一开始是自己在控件上手绘波形,虽然这种方便,但是能绘制的点太少,每次手画显得麻烦。
过后,又采用随机数构造波峰,这种虽说能构造很多点,产生很多随机的波峰波谷,但是对于特殊的波峰无法进行预期。
最后我就想到这种方法,先构造出一定范围的样例峰谷数据,然后可以对这些数据进行一个随机增幅,
值限定在一定范围,最后在构造需要识别的特殊波峰,并不对这个特殊波峰进行增幅,
这样自己就构造出了预期的值,单测的时候就能判断了。
 
具体的办法,我是把样例数据分成 上升的数据段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. Qt线程简单使用一:QThread~创建线程类子类

      需求: 点击QPushButton按钮,QLabel中的数字,不断累加,一直到999.   做法: 点击QPushButton后,启动线程,线程while循环,不断发送累加的数字回主线程,修改QL ...

  2. openGauss社区入门(openGauss-定时任务)

    为什么要使用定时任务 在一个固定的时间点活间隔一段时间需要频繁触发某一动作,为了使用便捷,有了定时任务,极大的减少了工作的重复性,提高了效率. 定时任务的内容 基于定时任务产生的背景,定时任务内容包括 ...

  3. CentOS 8 安装 oracle 23c CentOS9 Error deal

    1.环境准备 软件准备 序号 软件 下载地址 1 VirtualBox https://www.virtualbox.org/wiki/Downloads 2 CentOS Stream 8 http ...

  4. 力扣181(MySQL)- 超过经理收入的员工(简单)

    题目: 表:Employee 编写一个SQL查询来查找收入比经理高的员工. 以 任意顺序 返回结果表. 查询结果格式如下所示. 示例 1:  解题思路: 一.[子查询] 先通过子查询找到当前员工的经理 ...

  5. 云小蜜 Dubbo3.0 实践:从微服务迁移上云到流量治理

    ​简介:阿里云-达摩院-云小蜜对话机器人产品基于深度机器学习技术.自然语言理解技术和对话管理技术,为企业提供多引擎.多渠道.多模态的对话机器人服务.17 年云小蜜对话机器人在公共云开始公测,同期在混合 ...

  6. 阿里巴巴超大规模 Kubernetes 基础设施运维体系揭秘

    ​简介:ASI 作为阿里集团.阿里云基础设施底座,为越来越多的云产品提供更多专业服务,托管底层 K8s 集群,屏蔽复杂的 K8s 门槛.透明几乎所有的基础设施复杂度,并用专业的产品技术能力兜底稳定性, ...

  7. [GPT] 网页中某些dom内容是通过 js 数据异步渲染的,nodejs 怎么获取网页解析这些数据

      要处理使用JavaScript异步渲染内容的网页,您可以在 JavaScript 蜘蛛中使用 Puppeter 或 Playwright 等无头浏览器来获取网页,然后与动态渲染的内容进行交互. 下 ...

  8. [FE] 浅谈 Chakra UI 的现代化浅封装 - 语义化大行其道

      Web2.0 发展至今,网页元素越来越丰富和多样化,数据越来越多. 从需求上来说,也已经不再是展示简单个静态网页,高效的开发交互.打通后端数据,产生了 React 和 Vue 两个著名框架. Re ...

  9. [Contract] web3.eth.getAccounts, web3.eth.getCoinbase 使用场景区别

    web3.eth.getAccounts() 返回节点控制的账号列表(Promise returns Array) web3.eth.getCoinbase() 返回挖矿奖励所归集的地址(Promis ...

  10. WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等

    在应用启动过程里,除了主 UI 线程之外,如果还多启动了新的 UI 线程,且此新的 UI 线程碰到 ContentPresenter 类型,那么将可能存在让新的 UI 线程和主 UI 线程互等.这是多 ...