我有一些二进制数组。例如,让我的数组是:
int a[] = {1, 0, 0, 0, 1, 0, 1, 0, 1}
我想根据这个公式计算值:
如何使用快速傅里叶变换计算此功能?我有一个大型数组,我必须多次计算这个函数。所以,我希望能够快速计算出这个功能。
答案 0 :(得分:1)
你正在进行的计算基本上是一个卷积,时域中的卷积只是频域中的乘法。所以得到a
的FFT并将其与自身相乘,然后执行IFFT返回时域。简而言之,你可以通过
b(2*i) = IFFT( FFT(a[0:2*i)]).FFT(a[0:2*i]) )
答案 1 :(得分:-2)
void main()
{
int i,k,sum=0;
for(i=0;i<9;i++)
{
for(k=0;k<2*i;k++)
{
sum + =(a[k]*a[2*i-k]; // calculating B
}
}
cout<<sum;
}