请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
主题中讨论的其他器件:controlSUITE我在 CFFT.run()后的 CFFT.pOutBuffer 处进行滤波。 但有时我得到了 不合理的结果。
根据下面的代码、是否存在需要筛选的虚部?
非常感谢!
处理:TMS28377D
有关 FFT 滤波器的代码:
collect_adc(source_data, FFT_SIZE);
CFFT_Obj CFFT;
CFFT.pInBuffer = source_data;
CFFT.pOutBuffer = fft_result;
CFFT.init = (void (*)(void *))CFFT_init1024Pt ;
CFFT.run = (void (*)(void *))CFFT_run1024Pt ;
CFFT_Handle handleCFFT = &CFFT;
CFFT.init(handleCFFT);
CFFT.run(handleCFFT);
// CFFT_unpack(handleCFFT);
// filter
int16_t max = getmax(CFFT.pOutBuffer) * 0.8;
int16_t min = getmin(CFFT.pOutBuffer) * 0.8;
for (i = 0; i < FFT_SIZE; ++i) {
if (CFFT.pOutBuffer[i] > min && CFFT.pOutBuffer[i] < max) {
CFFT.pOutBuffer[i] = 0;
}
}
int16_t *temp = CFFT.pInBuffer;
CFFT.pInBuffer = CFFT.pOutBuffer;
CFFT.pOutBuffer = temp;
// CFFT_pack(handleCFFT);
void _ICFFT_run1024Pt(CFFT_Handle hndCFFT);
CFFT.run = (void (*)(void *))_ICFFT_run1024Pt;
CFFT.run(handleCFFT);
// CFFT_conjugate(handleCFFT->pOutBuffer, handleCFFT->nSamples);