xcorr 函数在MATLAB里面很好用啊,c语言怎么实现呢?诸如此类的如卷积啊,就是有点绕
由于自相关具有对称性,直接计算前一半的数值就行了。
直接贴代码
void xcorr_func(vector<int> &in , vector<int> &out)
{
int lenth=in.size();
for (int i=0;i<=lenth;i++)
{
for (int j=0;j<=i;j++)
{
out[i]+=in[j]*in[lenth-1-i+j];
}
}
for (int i=lenth;i<(lenth<<1)-1;i++)
{
out[i]=out[(lenth<<1)-2-i];
}
}
试一试
int main()
{
//自相关的数组
int a[]={1,2,3,4,5,6,7,8,9};
vector<int> in(a,a+9);
vector<int> out(17);
xcorr_func(in,out);
for (int i=0;i<=16;i++)
{
std::cout<<out[i]<<std::endl;
}
}
MATLAB 结果