[设为首页]
[加入收藏 ]
[联系我们]
 论文范本首页 | 教育 | 医学 | 文史 | 艺术 | 农学 | 行政 | 法律 | 管理 | 理工 | 经济 | 总结报告
 当前位置:首页 >> 理工论文 >> 计算机与信息技术论文 >> 
Vc++下如何利用Matlab工具箱进行数字信号处理
来源: 作者: 浏览: 日 期:2006-1-14

摘要: 本文详述了在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=0;j<1024;j++)//注:如通过采集卡采集数据可将采集的数据放在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 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,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');");

engEvalString(ep,"ylable('db');");

mxDestroyArray(T); //释放内存

mxDestroyArray(mFs);

mxDestroyArray(mnfft);

mxDestroyArray(result);

engEvalString(ep,"close;");

engClose(ep);

}

此文共有31 2 3

起点声明:本站文章内容信息收集于网络,我们尽力做到对内容的严格审 核,但是我们无法保证信息的100%准确,信息内容我们只提供给您做为参考,我们对此不负任何责任! 同时如果您觉的我们的某些信息侵犯了您的版权,请来信来电告知,我们会立刻修改或删除!
 相关文章
·如何将使用PB5开发的应用程序平滑迁移到PB6
·实现桌面地理信息系统ArcView和VB5应用程序之间的通讯
·远程异步登陆Cisco 路由器
·天津港保税区海关EDI货物监管系统的设计及实现
·Internet上一种新型的CORBA应用安全防护模型
·Internet防火墙技术综述
·一种“假中断”现象及处理方法
·在AutoCAD尺寸线中自定义箭头块应用技巧
·IP 网 若 干 技 术 进 展
·Win98系统的优化运行
·三网融合及其物理网络的选择
·基于Visual Basic快速开发现场电视监控系统
·扩频技术在数字水印技术中的应用
·Vc++下如何利用Matlab工具箱进行数字信号处理
·优化程序长度的一种方法
·远程访问服务
合作伙伴: 奇傲行业门户,行业网摘联盟 中华纺织网 生物导航网 起点外贸网
轻工业展览中心 | 锦程全球订舱中心 | 外贸英才网 | 跨国采购网 | 中国海关总署 | 商务部网站 | 信息导报网 | 中国黄页 | 国家税务总局 |
ALEXA网站排名 | 广东外语 外贸大学 | 外贸服装网 | 中国对外 贸易中心 | 中国纺织经济信息网 | 广交会快讯网 | 在线广交会 |
Copyright 2003-2008 起点外贸网 www.86exp.com All Rights Reserved 闽ICP备05037459号