Ошибка при запуске KissFFT на Beaglebone black

Я пытаюсь использовать KissFFT на BeagleBone Black под управлением Debian 7.5 с ядром 3.8. Программа компилируется, но когда я пытаюсь ее запустить, она показывает ошибку

Реальная оптимизация БПФ должна быть даже

.

Эта же программа правильно работает на ноутбуке с Ubuntu. Я также пробовал различную длину окна fft, но ошибка остается прежней. Может ли кто-нибудь указать, где я ошибаюсь? При этом прикрепляем код и суть с выделением .

#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


person rathin2j    schedule 14.06.2017    source источник
comment
Попробуйте связаться с автором @MarkBorgerding, так как он является участником StackOverflow.   -  person Paul R    schedule 15.06.2017


Ответы (1)


Одна проблема заключается в том, что вы перезаписываете буфер s. Цикл с "i‹=7" создает 7 дополнительных копий первых 128 элементов в s. 8*128 = 1024 > 960

person Mark Borgerding    schedule 15.06.2017
comment
Да, я делаю 7 (извините за опечатку, не должно быть только ‹ 7) копий, чтобы эмулировать окно данных, которое я собираюсь получить. Я делаю это для заполнения нулями, должно ли это вызвать проблемы с KissFFT? В конечном итоге это просто массив с нулевым заполнением. - person rathin2j; 15.06.2017
comment
Большое спасибо! ЭТО ‹ 7 опечатка была ошибкой, программа заработала. Я действительно извиняюсь за беспокойство из-за такой тривиальной ошибки! - person rathin2j; 16.06.2017
comment
Эй, Марк! Приятно видеть вас на Stackoverflow! Я думаю, что нет лучшего человека, чтобы задать вопрос, связанный с kissfft, чем ты сам. Не могли бы вы взглянуть на эту проблему? Ваша помощь будет высоко оценена. - person karlphillip; 18.05.2020