c#求波形的极大值

c#求波形的极大值,思想是在上升沿和下降沿之间各取一点,在这两点范围之间取最大值。

int[] frontIndex = new int[9];//存放刚刚大于等于1000的索引
        int[] backIndex = new int[9];//存放刚刚小于1000的索引
        int[] peakValuex = new int[9];//峰值x轴坐标
        int maxDataCnt = 0;  //
        bool maxFlag = false;//标志位

变量定义如上

private void searchExtremum(object sender, RoutedEventArgs)
 {
 double peakValue = ADData[0];
            string strLong = "";
            for(int i=1;i<=512;i++)
            {
            if(maxFlag)//标之位maxFlag能够控制是在上升沿还是下降沿取值
            {
            if(ADData[i]<=1000)//数据存储在ADData[i]数组中,,取点的范围是1000左右那个点
            {
            backIndex[maxDataCnt] = i;//下降沿的那个点,并保存在backIndex[maxDataCnt]这个数组中
            maxFlag = false;
            maxDataCnt+=1;
            }
            }
            else
            {
            if(ADData[i]>=1000)
            {
            frontIndex[maxDataCnt] = i;;//上降沿的那个点,并保存在frontIndex[maxDataCnt]这个数组中
             maxFlag = true;//相当于变轨,上升沿取到这个点之后,能够确保下次能够去去取下降沿那个点。
             }
             }
             }

以上就是选择点

for(maxDataCnt = 0;maxDataCnt<9;maxDataCnt++)
{
for(int i = frontIndex[maxDataCnt];i<=backIndex[maxDataCnt];i++)
{
if (ADData[i] > peakValue)
{
 peakValuex[maxDataCnt] = i;
 peakValue = ADData[i];
 }
 }
 peakValue = 0;//注意,这一步非常重要。如果有3个极大值7,9,7那么第三个极大值7不会显示,应为9比7大。
 }

以上是在上升沿和下降沿的范围内取最大值。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值