我尝试使用以下代码在2D中计算fft,但是,结果不正确或者Maltab显示错误消息并自动关闭。我找不到错误在哪里。请你帮助我好吗 ? 这是代码:
<span style="color:red">Hea</span>
<span style="color:blue">dli</span>
<span style="color:green">ne</span>
N.B:我不认为这是重复的,因为在我的情况下,Matlab会自动崩溃并关闭。
修改 考虑到您的评论,以下是代码的新版本:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "C:\exemple\fftw3.h"
#include <mex.h>
void DivideArray(double *Data, int NumEl, double Divisor)
{
int n;
for(n = 0; n < NumEl; n++)
Data[n] /= Divisor;
}
void FFT2DIntervaled(int M ,int N, double *X, double *Y, int Sign)
{
fftw_plan Plan;
if(!(Plan = fftw_plan_dft_2d(M, N, (fftw_complex *)X, (fftw_complex *)Y, Sign, FFTW_ESTIMATE)))
mexErrMsgTxt("FFTW3 failed to create plan");
fftw_execute(Plan);
fftw_destroy_plan(Plan);
if(Sign == 1)
DivideArray(Y, 2*M*N, M*N);
}
void mexFunction(int nlhs,mxArray *plhs[] ,int nrhs ,const mxArray *prhs[])
{
plhs[0] = mxCreateDoubleMatrix(mxGetM(X_IN),mxGetN(X_IN), mxCOMPLEX);
FFT2DIntervaled(mxGetM(prhs[0]),mxGetN(prhs[0]),(double*)mxGetPr(prhs[0]),mxGetPr(plhs[0]),1);
}
它仍然无法正常工作。你能帮我找到错误吗?