Реальный обратный FFT дает мне массив, полный NaN s вместо поплавки.kissfft - Inverse Real FFT дает NaN
kiss_fftri(conf,complex_array,output);
complex_array нормально, ничего плохого с ценностями я предполагаю.
kiss_fftr_cfg conf = kiss_fftr_alloc(size,1,NULL,NULL);
конф должно быть тоже хорошо, насколько я знаю.
Что-то не так с размером? Я знаю, что выходной размер вперед FFT должен быть N/2 + 1 и размер выше должен быть N.
Я уже сделал простой рабочий пример с аудио свертки в частотной области и все, , но я понятия не имею, Что происходит здесь.
Nans и некоторые образцы, complex_array выше.
размер параметр в моем примере всегда . Это количество образцов. Таким образом, N/2 + 1 .
Сначала у меня есть моно канал с образцами 450 тысяч. Затем я разбиваю его на 24 части. Каждая часть теперь составляет 18750 образцов. С каждым из этих образцов я делаю свертку с импульсным откликом. Таким образом, в основном числа, которые я печатаю выше, позволяют сказать, что первые 20 образцов в каждом из 24 раундов цикл for. Думаю, здесь ничего плохого.
Я даже сделал on kiss_fftr_next_fast_size_real (размер), и он остается таким же, чтобы размер был оптимальным.
Вот мой свертка:
kiss_fft_cpx convolution(kiss_fft_cpx *a, kiss_fft_cpx *b, int size)
{
kiss_fft_cpx r[size];
memset(r,0,size*sizeof(kiss_fft_cpx));
int skalar = size * 2; // for the normalisation
for (int i = 0; i < size; ++i){
r[i].r = ((a[i].r/skalar) * (b[i].r)/skalar) - ((a[i].i/skalar) * (b[i].i)/skalar);
r[i].i = ((a[i].r/skalar) * (b[i].i)/skalar) + ((a[i].i/skalar) * (b[i].r)/skalar);
}
return r;
}
размер I вход здесь через аргумент является N/2 + 1.
Угадай, что вам нужно показать немного больше своего кода, чтобы оно было полезным. Вы инициализировали выходной массив, который вы передаете функции fftri? – BitTickler
@BitTickler Yup. 'kiss_fft_scalar output [size];' 'memset (output, 0, size * sizeof (kiss_fft_scalar));' – Rok
Здесь 'complex_array' является результатом свертки некоторых звуковых данных и импульсного отклика. Кажется, все хорошо, как я уже говорил. – Rok