renault 发表于 2011-11-28 09:29:59

关于matlab仿真付氏算法遇到的怪异问题?

程序的设计思路:
一、此程序根据经典付氏采样算法来考虑的,采样数据类型是float型,通过在matlab中建立一个*.c的文件,然后通过matlab的主函数接口初始化相关变量;
二、遇到的调试问题再下面,请各位高手帮忙分析一下:标识红色字体的行,为定位的错误行,实在是没发现有什么错误。
void dft(int n,float *x,float *w)
{
   extern int   inv;
   extern long    npt;
   int            k;
   double         WN,wk,c,s,XR,XI;
      extern complex x1;
      WN=2*pi/npt;
    if(inv==1)
   WN=-WN;
    for(k=0;k<npt;++k)
    {
       XR=0.0;
       XI=0.0;
      wk=k*WN;
   for(n=0;n<npt;++n)
   {
          c=cos(n*wk);
          s=sin(n*wk);
   XR=XR+x1.real*c+x1.imag*s;
   XI=XI-x1.real*s+x1.imag*c;
   }
   if(inv==1)
   {
   XR=XR/npt;
    XI=XI/npt;
   }
    }
    for(k=1;k<=npt;++k)
    {
      x1.real=XR;
         x1.imag=XI;
    }

}
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]) //nlhs是输出数据的个数,plhs是指向mxArray的输出数据指针,nrhs是输入数据的个数,prhs是指向mxArray的输入数据的指针
{                                                                     
    a=mxGetScalar(prhs);
    b=mxGetScalar(prhs);
    plhs=mxCreateDoubleMatrix(1,1,mxREAL);
    c=mxGetPr(plhs);
    *c=dft(n,x,w);   
   
}
lcc preprocessor warning: dft.c:50 EOF inside comment
lcc preprocessor warning: dft.c:50 No newline at end of file
Error dft.c: 50syntax error; found `end of input' expecting `;'
1 errors, 2 warnings

D:\MATLAB\BIN\WIN32\MEX.PL: Error: Compile of 'dft.c' failed.
页: [1]
查看完整版本: 关于matlab仿真付氏算法遇到的怪异问题?