存储一个fftwf_plans数组?

时间:2019-03-13 02:55:42

标签: c arrays dynamic fftw

我正在开发SDR程序,并且有来自RTL2832加密狗的数据队列,另一个队列等待通过FFTW(在另一个线程中),另一个队列等待在另一个线程中显示。

我使用了一组静态计划,但是现在我想切换到动态分配的计划。喜欢:

import React, { useState, useEffect } from 'react';

import useFetchAPI from '../hooks/TicketCounterHook'

function TicketCounter() {
    const url = `/ticketapi/ticketslist/`
    const data = useFetch(url)
    return (
        <React.Fragment>
            {data.length}
        </React.Fragment>
    );
}

export default TicketCounter

然后我做

//fftwf_plan fftplan[NUMFFT];
fftwf_plan *fftplan; // dynamic version

然后填充数组:

fftplan = calloc(NUMFFT,sizeof(fftwf_plan));

现在它运行时出现段错误,我有点无知。我在一年或一年多以前就知道了FFT部分,但我没有加快速度。它与静态数组一起使用。我几乎不了解**,现在我试图用不透明的指针填充动态数组。我认为这主要是一个C问题,而不是FFT问题,但是我认为我在这里不能使用**,因为它是不透明的。

我的数据位于

之类的2d数组中
fftplan[i] = fftwf_plan_dft_1d(fftsize,fftin[i],fftout[i],FFTW_FORWARD,FFTW_ESTIMATE);

所以基本的AM演示就像

fftwf_complex *fftin[NUMFFT], *fftout[NUMFFT];

也许我不需要为每个缓冲的数据制定单独的计划。 lochead是循环队列中的位置,i是单个点,最后的[0]或[1]是实部或虚部。

dpybuf[i] = sqrt(((fftout[lochead][i][0]) * (fftout[lochead][i][0])) + \
   ((fftout[lochead][i][1]) * (fftout[lochead][i][1])));

在进行SDR时,通过相隔90度的2次A / D转换将无线电波形数字化。这些分别称为I和Q,并视为实数和虚数。没有负数的实际平方根。

好的,还有更多的代码,但是整个过程在几个文件中只有几千行。

-------------- edit------------
fftwf是FFTW的单精度浮点版本。我只有8位来自加密狗的样本,不需要双打。

fftsize现在是我的显示X分辨率,我在这里运行4096点,现在是1024

0 个答案:

没有答案