- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Vc++下如何利用Matlab工具箱进行数字信号处理_计算机论文.doc
Vc++下如何利用Matlab工具箱进行数字信号处理_计算机论文
Vc++下如何利用Matlab工具箱进行数字信号处理_计算机论文
摘要:
本文详述了在Vc环境下如何利用Matlab工具箱进行数字信号处理,全文以Matlab工具箱中功率谱密度分析函数为例,介绍了通过Matlab自带的引擎、Matlab自身的编译器以及利用MathTools公司的Matcom进行对工具箱函数的调用。
关键词:Matlab M-文件 引擎 编译器 Matcom Vc++
Matlab的信号处理工具箱是信号算法文件的集合,它处理的基本对象是信号与系统,信号处理工具箱位于目录、Toolbox\Signal下,利用工具箱中的文件可以实现信号的变换、滤波、谱估计、滤波器设计等。在其它的环境如Vc下如果能调用Matlab工具箱中的文件,会大大地加快一些算法的实现,同时其可靠性也很高。利用Matlab引擎
Matlab引擎采用客户和服务器计算方式,在运用中,Vc的C语言或C++语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,并从Matlab引擎接收数据信息,它提供了下列几个函数: engOpen, engGetArray, engPutArray, engEvaString,
engOutputBuffer ,engClose与客户机进行交互。
下面例程是在Vc下建一个基于对话框的应用程序,在对话框中设置一个Button控件OnMatlabEngine.,在对话框 .cpp文件中加入”engine.h” 和“math.h” 头文件,下面给出部分程序清单。
Void CtestmatlabDlg::OnMatlabEngine(){
Engine *ep
mxArray* T=NULL,*result=NULL,*mFs=NULL,*mnfft= NULL
double datax[1024]
char buffer[1024]
for(int j=0j1024j++)//注:如通过采集卡采集数据可将采集的数据放在datax[]数组中,此循环就不需要
{
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 Cant 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,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(功率谱分析))
engEvalString(ep,xlabel(Hz
您可能关注的文档
- DES算法实现过程分析_计算机论文.doc
- Development of On-line Information Dissemination for Distance Learning in Bangladesh _计算机网络论文.doc
- Director与Flash在多媒体系统开发中的差异分析 _计算机论文.doc
- DOS下DSP播音的编程 _计算机论文.doc
- DOS界面下通用图形编辑软件的设计_计算机论文.doc
- DOS真彩色模式下真彩色图像显示技术_计算机论文.doc
- DSP HPI总线与MPC8272总线接口的FPGA实现_通信学论文.doc
- DSP—数字化音频领域的未来_计算机论文.doc
- DSP与单片机通信的多种方案设计_计算机论文.doc
- E-LEARNING IN MALAYSIAWith special reference to Universiti Tun Abdul Razak(上)_计算机网络论文.doc
- VC++与MATLAB接口编程方法与实现_计算机论文.doc
- VC6中调用 ProEssentials v5图表组件实现科学图表绘制_计算机论文.doc
- VC环境下的OPC客户端程序开发_计算机论文.doc
- Vega扩展模块的设计与研究_计算机论文.doc
- VGA16色模式下的图像漫游 _计算机论文.doc
- VGA显示与TV显示的区别及转换_计算机论文.doc
- VGA色彩编辑技术_计算机论文.doc
- Virtual Lifelong Learning in the University of Tartu–Challenges for Teachers, Students and Managers _计算机网络论文.doc
- VIRTUAL PROGRAMMING LAB FOR ON-LINE DISTANCE LEARNING (上)_计算机网络论文.doc
- VIRTUAL PROGRAMMING LAB FOR ON-LINE DISTANCE LEARNING (下)_计算机网络论文.doc
文档评论(0)