Vc++下如何利用Matlab工具箱进行数字信号处理
double samt=(double)(1.0/1024);
datax[j]=sin(2.0*63.0*samt*3.1415926+1.15*3.1415926);
}
double *pPxx,*pFxx;if(!(ep=engOpen(" \0"))){//
打开Matlab引擎,建立与本地Matlab的连接 fprintf(stderr,"\n Can't start MATLAB engine\n");exit(-1);
}
double Fs[1]={1024};//
因为Matlab所有参与运算的参数都是矩阵的形式,因而下列几行将参数转变 double nfft[1]={1024};//成Matlab可接受的矩阵形式。 T=mxCreateDoubleMatrix(1,1024,mxREAL);mnfft=mxCreateDoubleMatrix(1,1,mxREAL);
mFs=mxCreateDoubleMatrix(1,1,mxREAL);
mxSetName(T,"T");
mxSetName(mnfft,"mnfft");
mxSetName(mFs,"mFs");
memcpy((char*)mxGetPr(T),(char*)datax, 1024*sizeof(double));
memcpy((char*)mxGetPr(mnfft),(char*)nfft, sizeof(double)); memcpy((char*)mxGetPr(mFs),(char*)Fs,1*sizeof(double)); engPutArray(ep,T); //将转化的参数放入引擎中,此时可在Matlab command窗口下查看此参数 engPutArray(ep,mnfft);engPutArray(ep,mFs);
engEvalString(ep,"[pxx,fo]=psd(T,mnfft,mFs);"); //
利用引擎执行工具箱中文件 engOutputBuffer(ep,buffer,51 《Vc++下如何利用Matlab工具箱进行数字信号处理(第2页)》