基于MKL的FFT

您所在的位置:网站首页 mkl函数库 基于MKL的FFT

基于MKL的FFT

2023-08-15 08:36| 来源: 网络整理| 查看: 265

主要步骤来自官方文档,本人做了一下小结。。。

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