器件型号:XTCIEVMK2LX
工具/软件:TI-RTOS
各位专家、您好。
这与我之前 的问题有关 、我刚想到。 ;)根据文档,FFT 函数 DSPF_sp_fftSPXSP()的输入长度限制为 131072.有没有特殊原因? 硬件限制? 或其他原因? 我需要知道这一点、因为我计划使用该函数实施自己的 FFT 函数、或修改它以满足我的目的(输入长度非常长)、如上一个答案中所建议的那样。 如果输入长度比库函数提供的长度长得多存在任何关键问题、我需要重新考虑我的计划。
非常感谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号:XTCIEVMK2LX
工具/软件:TI-RTOS
各位专家、您好。
这与我之前 的问题有关 、我刚想到。 ;)根据文档,FFT 函数 DSPF_sp_fftSPXSP()的输入长度限制为 131072.有没有特殊原因? 硬件限制? 或其他原因? 我需要知道这一点、因为我计划使用该函数实施自己的 FFT 函数、或修改它以满足我的目的(输入长度非常长)、如上一个答案中所建议的那样。 如果输入长度比库函数提供的长度长得多存在任何关键问题、我需要重新考虑我的计划。
非常感谢!
感谢您的回答 db_Woodall。
那么、您意味着输入长度是以字节为单位的输入数据的总长度、您不是? 假设我在浮点数据类型中有两点、那么长度是2 X 4字节= 8字节? 如果我在浮点数据上使用8192点 FFT、那么输入数据长度高达32KB?
在 DSPLIB 的 API 引用中, DSPF_sp_fftSPxSP()的说明如下:
----------------------------------------
void DSPF_sp_fftSPxSP (int N、 float * ptr_x、 float * ptr_w、 float * ptr_y、 unsigned char * bev、int n_min、 int offset、 int n_max)
参数:
-复数采样中 FFT 的 N 长度
- PTR_x 指向复杂数据输入的指针
- ptR_w 指向复数 Twiddle 因子的指针
- ptR_y 指向复数输出数据的指针
-用于指向包含64个条目的位反向表的 Brev 指针
-如果 N 可以表示为4的幂、则 n_min 应为4;否则 n_min 应为2
-从主 FFT 开始的 sub-FFT 复数样本中的偏移指数
-在复数采样中主 FFT 的 n_max 大小
算法:
dspf_sp_fftSPxSP_cn.c 是经优化的线性汇编代码的自然 C 等效项、没有任何限制。 请注意、线性汇编代码已经过优化、可能会有限制。
假设:
N 需要是2的幂
-对于线性汇编实现、8 <= N <= 131072、32 <= N
- ptR_x、ptR_w 和 ptR_y 指向的阵列不应重叠
-由 PTR_x、PTR_w 和 PTR_y 指向的阵列应在双字边界上对齐
实施说明:
-可中断性:代码是可中断但不可中断的。
-端字节序支持:代码支持大端字节序和小端字节序模式。
----------------------------------------
参数 N 是说明中 FFT 的长度。 不过、在 DSPLIB 的示例工程中、N 似乎用作数点、FFT_SP_Example_66_LE_ELF (FFT_Example_sp.c)如下所示:
/*需要计算 FFT 的样本数*/ #define N 256... /*对齐我们必须使用的表*/ #pragma DATA_ALIGN (x_ref、8); float x_ref [2*N]; #pragma DATA_ALIGN (x_sp、8); float x_sp [2*N]; #pragma DATA_ALIGN (y_sp、8); float y_sp [2*N]; #pragma DATA_ALIGN (w_sp、 8); float w_sp [2*N]; ... void main (){ /*生成输入数据*/ generateInput (NUM_SIN_Waves); /* Genarate Twiddle Factors */ gen_twidle_FFT_sp (w_sp、N); /*调用 FFT 例程*/ dspf_sp_fftSPxSP (N、x_sp、w_sp、y_sp、brev、 4、0、N); /*调用测试代码以分离实数和虚数数据*/ 独立 RealImg (); }
输入/输出数组 x_sp、w_sp 和 y_sp 具有2*N 值,因为实值和虚值是交错的。 因此、我们可以说它是 N 点数据。 在本例中、输入长度似乎是指点的数量、而不是文档以字节为单位的总数据大小。 换句话说,DSPF_sp_fftSPxSP()的输入长度限制为131072点,即131072 * 4字节=总共512KB。
我认为 FFTC 上下文中的点数和软件 FFT 上下文中的输入长度表示相同的东西。 我的猜测是对的吗?
总之、我可以从您的回答中获得一些感受。 非常感谢! )