【英飞凌PSoC 6 RTT开发板试用】信号处理前端之极值检测

描述

在电力等行业,分析电压极值,是一项重要的参数分析,可以分析电压的波动;示波器中也有自动测量极值的功能更。

基于本板设计了信号处理前端也实现了该功能。

算法来源于论文https://www.mdpi.com/1999-4893/5/4/588/htm

核心代码如下

void  ampd (int32_t* data, int32_t len)

{

    int row_sum;

     for (int k=1; k< len/2+1; k++)

    {

        row_sum = 0;

         for (int i=k; i< len-k; i++)

        {

             if ((data[i] > data[i - k]) && (data[i] > data[i + k]))

            {

                row_sum -= 1;

            }

        }

        arr_rowsum[k-1] = row_sum;

    }

    int min_index = argmin(arr_rowsum,len/2+1);

     max_window_length = min_index;

     for (int k=1; k< max_window_length + 1; k++)

    {

         for (int i=k; i< len - k; i++)

        {

             if ((data[i] > data[i - k]) && (data[i] > data[i + k]))

            {

                p_data[i] += 1;

            }

        }

    }

 

     for (int k=0; k< len; k++)

    {

         if (p_data[k] == max_window_length)

        {

            /* 极大值 */

        }

    }

}

测试

添加命令行

{ (const uint8_t*)"max",         MaxFun,           "max"},                 /*打印帮助信息*/

 
void  MaxFun ( void * param)

{

	max_test();

}

 
void  MaxFun ( void * param);

测试代码如下,串口命令行输入命令max,开始采集ADC值,并计算极值,打印到PC串口通过seraistudio可视化显示

int max_test(void)
{
	for(int i=0; i< 10; i++)
	{
		memset(p_data,0,sizeof(p_data));
		//adc_samp(sim_data_buffer,1000);
		sim_data();
		ampd(sim_data_buffer, sizeof(sim_data_buffer)/sizeof(sim_data_buffer[0]));
	    for(int k=0; k< sizeof(sim_data_buffer)/sizeof(sim_data_buffer[0]); k++)
	    {
	        if(p_data[k] == max_window_length)
	        {
	            /* 极大值 */
	        	printf("/*%ld,%ld*/\\r\\n",sim_data_buffer[k],sim_data_buffer[k]);
	        }
	        else
	        {
	        	printf("/*%ld,%d*/\\r\\n",sim_data_buffer[k],0);
	        }
	        cyhal_system_delay_ms(10);
	    }
	}
	return 0;
}

效果如下,IN是原始数据,MAX是检测到的极大值,如果检测极小值将原始数据取反即可。

信号

信号

检测语音,效果如下

信号

信号

信号

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分