CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
复数傅快速里叶变换

函数

void csky_fft_lib_cx16_fft (q31_t log2_buf_len, q15_t *in_buf, q15_t *out_buf, const q15_t *twi_table, const uint16_t *bitrev_tbl, q15_t *temp_buf, q7_t *ScaleShift, q31_t br)
 Q15 复数快速傅里叶变换 更多...
 
void csky_fft_lib_cx32_fft (q31_t log2_buf_len, q31_t *in_buf, q31_t *out_buf, const q31_t *twi_table, const uint16_t *bitrev_tbl, q31_t *temp_buf, q31_t br)
 Q31 复数快速傅里叶变换 更多...
 
void csky_fft_lib_cx16_ifft (q31_t log2_buf_len, q15_t *in_buf, q15_t *out_buf, const q15_t *twi_table, const uint16_t *bitrev_tbl, q15_t *temp_buf, q7_t *ScaleShift, q31_t br)
 Q15 复数快速傅里叶逆变换 更多...
 
void csky_fft_lib_cx32_ifft (q31_t log2_buf_len, q31_t *in_buf, q31_t *out_buf, const q31_t *twi_table, const uint16_t *bitrev_tbl, q31_t *temp_buf, q31_t br)
 Q31 复数快速傅里叶逆变换 更多...
 

简要说明

简介
本库只是针对Q15和Q31格式数据。这里的FFT函数和源函数操作,输入和输出都在相同的内存上。 CFFT函数的输入数据是复数,2*fftLen入下的交叉式数据。
 {real[0], imag[0], real[1], imag[1],..} 
函数的输出放在和输入相同的数组上,并且输出频域值会有相同的交叉式数据。 和源方法 不同的是,这里正向和逆向 变换是分离的,因而参数ifftFlag就不需要了。
算法
对于长度为[64, 256, 1024]的数据,所用算法是多个基4蝶形运算的组合; 而对于长度为[32, 128, 512]的数据, 所用算法是一个基2运算配合多个 基4运算。
函数遵循基本的FFT定义,反变换包含1/fftLen比例的缩小,并通过每个阶段 乘以1/2来是想。这和教科书上反向傅里叶变换的定义吻合。
初始化
源方法 不同的是,函数不需要初始化。所有需要的参数 和常数都被直接传入函数中。

函数说明

void csky_fft_lib_cx16_fft ( q31_t  log2_buf_len,
q15_t in_buf,
q15_t out_buf,
const q15_t twi_table,
const uint16_t *  bitrev_tbl,
q15_t temp_buf,
q7_t ScaleShift,
q31_t  br 
)
参数
[in]log_buf_lenFFT输入数据的log2值,FFT的长度N 为(1<<log2_buf_len)
[in,out]*in_buf指向输入和输出内存
[in]*out_buf未被使用
[in]*twi_table指向旋转因子表
[in]*bitrev_tbl指向比特反转表
[in]*temp_buf未被使用
[in]*ScaleShift未被使用
[in]br比特反转标志,通常被置位
返回
none.
注解
由于时域和频域的数据都为Q15,正向变换很容易溢出。小心使用,以防溢出。
void csky_fft_lib_cx16_ifft ( q31_t  log2_buf_len,
q15_t in_buf,
q15_t out_buf,
const q15_t twi_table,
const uint16_t *  bitrev_tbl,
q15_t temp_buf,
q7_t ScaleShift,
q31_t  br 
)
参数
[in]log_buf_lenFFT输入数据的log2值,FFT的长度N 为(1<<log2_buf_len)
[in,out]*in_buf指向输入和输出内存
[in]*out_buf未被使用
[in]*twi_table指向旋转因子表
[in]*bitrev_tbl指向比特反转表
[in]*temp_buf未被使用
[in]*ScaleShift未被使用
[in]br比特反转标志,通常被置位
返回
none.
void csky_fft_lib_cx32_fft ( q31_t  log2_buf_len,
q31_t in_buf,
q31_t out_buf,
const q31_t twi_table,
const uint16_t *  bitrev_tbl,
q31_t temp_buf,
q31_t  br 
)
参数
[in]log_buf_lenFFT输入数据的log2值,FFT的长度N 为(1<<log2_buf_len)
[in,out]*in_buf指向输入和输出内存
[in]*out_buf未被使用
[in]*twi_table指向旋转因子表
[in]*bitrev_tbl指向比特反转表
[in]*temp_buf未被使用
[in]br比特反转标志,通常被置位
返回
none.
注解
由于时域和频域的数据都为Q31,正向变换很容易溢出。小心使用,以防溢出。
void csky_fft_lib_cx32_ifft ( q31_t  log2_buf_len,
q31_t in_buf,
q31_t out_buf,
const q31_t twi_table,
const uint16_t *  bitrev_tbl,
q31_t temp_buf,
q31_t  br 
)
参数
[in]log_buf_lenFFT输入数据的log2值,FFT的长度N 为(1<<log2_buf_len)
[in,out]*in_buf指向输入和输出内存
[in]*out_buf未被使用
[in]*twi_table指向旋转因子表
[in]*bitrev_tbl指向比特反转表
[in]*temp_buf未被使用
[in]br比特反转标志,通常被置位
返回
none.