我正在开发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