gpt4 book ai didi

c - 在 Beaglebone black 上运行 KissFFT 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:17 25 4
gpt4 key购买 nike

我正在尝试在 BeagleBone Black 上使用 KissFFT,运行 Debian 7.5 和 3.8 内核。当我尝试运行该程序时,该程序已编译,但显示错误

Real FFT optimization must be even

.

同样的程序在 Ubuntu 笔记本电脑上运行正常。我还尝试了各种 fft 窗口长度,但错误仍然存​​在。谁能指出我哪里出错了?特此附上代码和 gist突出显示。

#include<stdio.h>
#include<math.h>
#include<string.h>
#include"kiss_fft.h"
#include "tools/kiss_fftr.h"
#include<complex.h>

int main()

{

float s[960], k; //s = sine, data array
float t[960]= {0}; //t = time data array
int i, size = 960, fft_len=16384;
float buff[fft_len];


bzero(&buff, sizeof(buff)); // write zeros in whole buffer

for (i = 0;i< fft_len;i++){
if(buff[i] != 0){
printf("Not zero");
break;
}
}

k = 2*M_PI/128;

// Creating a 128 point/cycle discreet input
for (i = 0; i< 128; i++){
t[i]= i*k;
s[i] = sin(t[i]*50);
}

// taking 7 cycles of input as 960 point window
for (i = 1; i <=7; i++){
memcpy(s+(128*i),s,128*4);
}

kiss_fftr_cfg fft_cfg = kiss_fftr_alloc(fft_len,0,0,0);

kiss_fft_cpx out_cpx[fft_len/2 +1];

// Padding the 960 length data with zeros
memcpy(buff,s, sizeof(s));

kiss_fftr(fft_cfg,buff,out_cpx);

for (i = 0; i <fft_len/2+1; i++){
printf("\n%d %f%+f ",i,out_cpx[i].r,out_cpx[i].i);
}

return 0;
}

我编译它使用:

gcc -g sinwave.c kiss_fft.c tools/kiss_fftr.c -o fsin -I "kiss_fft130/" -lm

最佳答案

一个问题是您正在覆盖 s 缓冲区。带有“i<=7”的循环为 s 中的前 128 个元素制作了 7 个额外 副本。 8*128 = 1024 > 960

关于c - 在 Beaglebone black 上运行 KissFFT 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com