Java实现波峰统计

如何统计一段离散信号中波峰的个数呢?来看下面一段波形:

可以非常容易数出波峰的个数3,我们都知道波峰是一段波中的局部最高点,那么此时我们只要找到这样一个点满足:

High(x1)>High(x1-1)

High(x1)>High(x1+1)

即此时x1的值大于其左右两边的值,就可以确定一个波峰了。代码实现一下:

public static int getPeakNum1(float[] data){
        int peak=0;
        
        for (int i=0;i<data.length-1;i++){
            if (data[i]>data[i-1]&&data[i]>data[i+1]){
                peak++;
                i++;
            }
        }
        
        return peak;
}

看起来好像没问题,接着看下面这两幅图:

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!实现ADC采集两个波峰的峰值,可以通过以下步骤实现: 1. 初始化ADC模块,设置采样通道和采样精度等参数。 2. 开始采样,使用循环进行多次采样,可以通过数组保存采样结果。 3. 分析采样结果,找出两个波峰的峰值。可以通过以下方法实现: a. 遍历采样结果数组,找出最大值和次大值,即为两个波峰的峰值。 b. 找出第一个波峰的位置,然后在该位置后面继续遍历,找出第二个波峰的位置,即为两个波峰的峰值。 4. 输出两个波峰的峰值。 以下是一个简单的示例代码,用于实现ADC采集两个波峰的峰值: ```c #include <stdio.h> #define SAMPLE_TIMES 1000 int main() { int adc_value[SAMPLE_TIMES]; int max_value = 0, second_max_value = 0; int max_index = 0, second_max_index = 0; int i; // 初始化ADC模块 // ... // 开始采样 for(i = 0; i < SAMPLE_TIMES; i++) { adc_value[i] = ADC_Read(); // 采样 } // 分析采样结果 for(i = 0; i < SAMPLE_TIMES; i++) { if(adc_value[i] > max_value) // 找出最大值和次大值 { second_max_value = max_value; second_max_index = max_index; max_value = adc_value[i]; max_index = i; } else if(adc_value[i] > second_max_value) { second_max_value = adc_value[i]; second_max_index = i; } } // 输出两个波峰的峰值 printf("Max value: %d at index %d\n", max_value, max_index); printf("Second max value: %d at index %d\n", second_max_value, second_max_index); return 0; } ``` 以上代码仅供参考,具体实现还需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值