首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Beaglebone黑上运行KissFFT时出错

在Beaglebone黑上运行KissFFT时出错
EN

Stack Overflow用户
提问于 2017-06-14 22:10:48
回答 1查看 176关注 0票数 2

我试图在Debian上使用KissFFT,运行带有3.8个内核的Debian7.5。程序编译后,当我试图运行它时,它会显示错误

实FFT优化必须是均匀的

相同的程序在Ubuntu笔记本电脑上正常运行。我也尝试了各种fft窗口长度,但误差保持不变。有人能指出我哪里出了问题吗?随函附上代码并在要旨上加高亮显示。

代码语言:javascript
复制
#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 sinewe.c kiss_fft.c tools/kiss_fftr.c -o fsin -I“kiss_ -lm 130/”-lm

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-15 10:26:03

一个问题是,您正在覆盖s缓冲区。带有"i<=7“的循环生成s. 8*128 = 1024 > 960中前128个元素的7个额外副本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44555526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档