想试下MKL FFT的用法以及参数设置,选了两组数据和MATLAB运行测试比对。
实数范围内的FFT
clear all
close all
Fs = 1000;
T = 1/Fs;
L = 1024;
t = (0:L-1)*T;
x = 0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
subplot(2,1,1);
plot(Fs*t,x);xlabel('Time(ms)');
N = 1024;
y=fft(x,N);
k = (0:N/2-1)*Fs/N; % kmax = (N/2)*Fs/N = Fs/2(Nyquist), Fs/N为频率分辨率
subplot(2,1,2);
plot(k,abs(y(1:N/2)));
y结果是复数,应用取模,可以在变量获取具体值
#define _CRT_SECURE_NO_DEPRECATE
#include <stdlib.h>
#include <stdio.h>
#include "mkl.h"
#include <math.h>
#define pi 3.1415926535897932384626433832795
int main()
{
float y_in[1024];
float y_out[1024+2];//+2存放对称频率
DFTI_DESCRIPTOR_HANDLE my_desc_handle = 0;
MKL_LONG status;
for (int i = 0; i < 1024; i++)
y_in[i]