预览图
- /*
- * 波形峰值查找的简单模拟 GUI Version
- * Coder: blackboy
- * Date: 2008-1-15
- * Tools: Dev-C++, C, Win32 API
- */
- #include <windows.h>
- #include <stdio.h>
- #include <string.h>
- #define MAX_POINTS 70 // 样本值大小
- #define JUDGE_WIN_X 1 // 用于判断的x轴距离
- #define JUDGE_RATE 1.0 // 用于判断的斜率
- // 样本值
- const int value[MAX_POINTS] =
- {
- 19,20,20,20,20,19,19,19,20,19,
- 18,17,16,19,21,19,16,17,18,19,
- 19,20,20,20,20,20,21,20,20,20,
- 20,20,20,23,26,23,20,21,21,20,
- 20,20,20,20,20,19,19,18,17,16,
- 15,14,13,15,17,15,12,11,10,9,
- 8, 7, 6, 5, 4, 3, 2, 1, 0, 1
- };
- // 判断标志
- // 趋势 增大:1, 减小:2, 峰值?:3, 保持:0, 无效:-1
- int tag[MAX_POINTS] = {-1};
- // 扫描每个点
- void Scan(int tag[MAX_POINTS])
- {
- int i;
- tag[0] = 0;
- // 第一遍扫描
- for(i=1; i<MAX_POINTS; i++)
- {
- if(value[i]>value[i-1])
- tag[i] = 1;
- else if(value[i]<value[i-1])
- tag[i] = 2;
- else
- tag[i] = 0;
- }
- // 第二遍扫描
- for(i=1; i<MAX_POINTS-1; i++)
- {
- if(tag[i-1]==1 && tag[i&