最近在试着用stm32做一个基于tdoa的声源定位项目,在最初的互相关函数这卡了一会,网上也没找到有用 的资料,就自己写了一个。

实际上实序列的卷积与互相关都差不多,卷积是两个序列的移位叠加,互相关则是翻转了其中一个序列的卷积。

#互相关 已用matlab验证
#include<stdio.h>
float p1[5]={1,2,3,4,5};
float p2[5]={1,2,3,4,5};

main()
{    
    int i,j;
    int size=5; //待卷积序列的长度,这里默认了两个序列一样长,如果不一样长可以加一个size
    //然后替换下面双循环的结束条件
    float x[10]={0,0,0,0,0,0,0,0,0,0};
    for(j=0;j<size;j++)
    {
        for(i=0;i<size;i++)
        {
        x[i+j]+=(p1[j])*(p2[size-1-i]);
        printf("x[%d]=%f \n",i+j,x[i+j]);
        }
        printf("\n");
    }
    
    for(i=0;i<10;i++)
    {
        printf("%f ",x[i]);
    }
    
}
#卷积 已用matlab验证
#include<stdio.h>
float p1[5]={1,2,3,4,5};
float p2[5]={1,2,3,4,5};

main()
{    
    int i,j;
    int size=5;
    float x[10]={0,0,0,0,0,0,0,0,0,0};
    for(j=0;j<size;j++)
    {
        for(i=0;i<size;i++)
        {
        x[i+j]+=(p1[j])*(p2[i]);  //与互相关的差别在这
        printf("x[%d]=%f \n",i+j,x[i+j]);
        }
        printf("\n");
    }
    
    for(i=0;i<10;i++)
    {
        printf("%f ",x[i]);
    }
    
}

//这个是用在32里的,对三个序列求互相关,结果保存在全局变量中

//互相关数据
float xcorr_data_0and0[SendBuff/3*2]={0};
float xcorr_data_0and1[SendBuff/3*2]={0};
float xcorr_data_0and2[SendBuff/3*2]={0};

//平均值
float32_t mean0=1.6;
float32_t mean1=1.6;
float32_t mean2=1.6;

void xcorr(float *data0,float *data1,float *data2,uint16_t size)
{
    int i,j;
    
    //清零数组
    memset(xcorr_data_0and0,'\0',sizeof(xcorr_data_0and0));
    memset(xcorr_data_0and1,'\0',sizeof(xcorr_data_0and1));
    memset(xcorr_data_0and2,'\0',sizeof(xcorr_data_0and2));
    
    //求平均值
    arm_mean_f32(    (float32_t *)data0,SendBuff/3,&mean0 );        
    arm_mean_f32(    (float32_t *)data1,SendBuff/3,&mean1 );    
    arm_mean_f32(    (float32_t *)data2,SendBuff/3,&mean2 );    
    
    //互相关代码
    for(j=0;j<size;j++)
    {
            for(i=0;i<size;i++)
            {
            xcorr_data_0and0[i+j]+=(data0[j])*(data0[size-1-i]);
            xcorr_data_0and1[i+j]+=(data0[j])*(data1[size-1-i]);
            xcorr_data_0and2[i+j]+=(data0[j])*(data2[size-1-i]);    
            }
    }
    
}

更多推荐