基于MKL的FFT |
您所在的位置:网站首页 › mkl函数库 › 基于MKL的FFT |
主要步骤来自官方文档,本人做了一下小结。。。 FFT的五个步骤: 1、创建描述符: DftiCreateDescriptor or DftiCreateDescriptorDM 用来设置维度,尺寸,变换的数量,输入/输出数据的存储器布局以及缩放因子。 许多设置被分配了默认值,您可能需要在应用程序中对其进行修改。 status = DftiCreateDescriptor( desc_handle, precision, forward_domain, dimension, length ) desc_handle:FFT描述符 Precision:转换精度,DFTI_SINGLE或DFTI_DOUBLE。 forward_domain:(转换域)DFTI_COMPLEX或DFTI_REAL。 Dimension:变换的维数 length :如果Dimension=1,则是一维变换的变换长度。 不然则是多维变换 的每个维度的长度。 2、设置参数: DftiSetValue or DftiSetValueDM (请小心设置)。通常使用 DftiGetValue or DftiGetValueDM来获得默认设置的参数 status = DftiSetValue( desc_handle, config_param, config_val ) 3、确认描述符: DftiCommitDescriptor or DftiCommitDescriptorDM 使描述符为计算做好准备。一旦描述被确认,之前所设置的参数将不可修改!! status = DftiCommitDescriptor( desc_handle ) 4、开始计算: DftiComputeForward/DftiComputeBackward or DftiComputeForwardDM/DftiComputeBackwardDM (可根据需要多次调用)。因为描述符是单独定义和提交的,所以计算函数所做的就是获取输入和输出数据并按照定义计算变换。要修改另一个调用计算函数的配置参数,请使用 DftiSetValue 后跟DftiCommitDescriptor (DftiSetValueDM 后跟DftiCommitDescriptorDM),或者创建并提交另一个描述符。
status = DftiComputeForward( desc_handle, x_inout ) status = DftiComputeForward( desc_handle, x_in, y_out ) status = DftiComputeForward( desc_handle, xre_inout, xim_inout ) status = DftiComputeForward( desc_handle, xre_in, xim_in, yre_out, yim_out )
5、释放描述符: DftiFreeDescriptor or DftiFreeDescriptorDM这将描述符内部使用的内存返回给操作系统。(释放内存) status = DftiFreeDescriptor( desc_handle )
以上所有函数操作成功时,返回0。您可以借助DftiErrorClass或DftiErrorMessage函数来解释非零状态。 官方例程: /* C99 example */ #include "mkl_dfti.h" float _Complex x_in[32], x_out[32]; DFTI_DESCRIPTOR_HANDLE my_desc_handle; MKL_LONG status; //...put input data into x_in[j], 0 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |