vc++下如何利用matlab工具箱进行数字信号

vc++下如何利用matlab工具箱进行数字信号

ID:22372918

大小:70.00 KB

页数:10页

时间:2018-10-28

vc++下如何利用matlab工具箱进行数字信号_第1页
vc++下如何利用matlab工具箱进行数字信号_第2页
vc++下如何利用matlab工具箱进行数字信号_第3页
vc++下如何利用matlab工具箱进行数字信号_第4页
vc++下如何利用matlab工具箱进行数字信号_第5页
资源描述:

《vc++下如何利用matlab工具箱进行数字信号》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Vc++下如何利用Matlab工具箱进行数字信号摘要:本文详述了在Vc环境下如何利用Matlab工具箱进行数字信号处理,全文以Matlab工具箱中功率谱密度分析函数为例,介绍了通过Matlab自带的引擎、Matlab自身的编译器以及利用MathTools公司的Mat进行对工具箱函数的调用。关键词:MatlabM-文件引擎编译器MatVc++Matlab的信号处理工具箱是信号算法文件的集合,它处理的基本对象是信号与系统,信号处理工具箱位于目录、ToolboxSignal下,利用工具箱中的文件可以实现信号的变换、滤波、谱估计、滤波器设计等

2、。在其它的环境如Vc下如果能调用Matlab工具箱中的文件,会大大地加快一些算法的实现,同时其可靠性也很高。利用Matlab引擎Matlab引擎采用客户和服务器计算方式,在运用中,Vc的C语言或C++语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,并从Matlab引擎接收数据信息,它提供了下列几个函数:engOpen,engGetArray,engPutArray,engEvaString,engOutputBuffer,engClose与客户机进行交互。下面例程是在Vc下建一个基于对话框的应用程序,在对话框中设置一个

3、Button控件OnMatlabEngine.,在对话框.cpp文件中加入”engine.h”和“math.h”头文件,下面给出部分程序清单。VoidCtestmatlabDlg::OnMatlabEngine(){Engine*ep;mxArray*T=NULL,*result=NULL,*mFs=NULL,*mnfft=NULL;doubledatax[1024];charbuffer[1024];for(intj=0;j<1024;j++)//注:如通过采集卡采集数据可将采集的数据放在datax[]数组中,此循环就不需要{d

4、oublesamt=(double)(1.0/1024);datax[j]=sin(2.0*63.0*samt*3.1415926+1.15*3.1415926);}double*pPxx,*pFxx;if(!(ep=engOpen(""))){//打开Matlab引擎,建立与本地Matlab的连接fprintf(stderr,"678Can'tstartMATLABengine");exit(-1);}doubleFs[1]={1024};//因为Matlab所有参与运算的参数都是矩阵的形式,因而下列几行将参数转变doub

5、lenfft[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));

6、memcpy((char*)mxGetPr(mnfft),(char*)nfft,sizeof(double));memcpy((char*)mxGetPr(mFs),(char*)Fs,1*sizeof(double));engPutArray(ep,T);//将转化的参数放入引擎中,此时可在Matlabmand窗口下查看此参数engPutArray(ep,mnfft);engPutArray(ep,mFs);engEvalString(ep,"[pxx,fo]=psd(T,mnfft,mFs);");//利用引擎执行工具箱中文件en

7、gOutputBuffer(ep,buffer,512);//如只想看显示图形,可将返回参数去掉,psd无返回参数缺省情况下会自动画图形result=engGetArray(ep,"pxx");//取出引擎中的数据放在所指的区域中供后续处理pPxx=mxGetPr(result);result=engGetArray(ep,"fo");pFxx=mxGetPr(result);engEvalString(ep,"plot(fo,10*log10(pxx));");//利用引擎画图engEvalString(ep,"title('功率谱分

8、析');");engEvalString(ep,"xlabel('Hz');");engEvalString(ep,"ylable('db');");mxDestroyArray(T);//释放内存mxDe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。