- 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工具箱进行数字信号处理
摘要:本文详述了在Vc环环境下如何利用Matlabb工具箱进行数字信号处理,,全文以Matlab工具箱箱中功率谱密度分析函数为例例,介绍了通过Matlabb自带的引擎、Matlabb自身的编译器以及利用MaathTools公司的Maatcom进行对工具箱函数数的调用。关键词:Matllab M-文件 引擎 编编译器 Matcom Vcc
Matlab的信号号处理工具箱是信号算法文件件的集合,它处理的基本对象象是信号与系统,信号处理工工具箱位于目录、Toolbbox\Signal下,利利用工具箱中的文件可以实现现信号的变换、滤波、谱估计计、滤波器设计等。在其它的的环境如Vc下如果能调用MMatlab工具箱中的文件件,会大大地加快一些算法的的实现,同时其可靠性也很高高。
Matlab引擎擎 Matlab引擎采用客客户和服务器计算方式,在运运用中,Vc的C语言或C 语言的程序作为前端客户户机,它向Matlab引擎擎传递命令和数据信息,并从从Matlab引擎接收数据据信息,它提供了下列几个函函数: engOpen, engGetArray,, engPutArrayy, engEvaStriing,
engOutpputBuffer ,enngClose与客户机进行行交互。
Vcc下建一个基于对话框的应用用程序,在对话框中设置一个个Button控件OnMaatlabEngine.,,在对话框 .cpp文件中中加入”” 和“” 头文件件,下面给出部分程序清单。。
Void CtestmmatlabDlg::OnnMatlabEnginee(){
Engine **ep;
mxArray** T=NULL,*ressult=NULL,*mFFs=NULL,*mnffft= NULL;
douuble datax[10024];
char buuffer[1024];
for(int j=0;;j{
double saamt=(double)((/1024);
dattax[j]=sin(***samt* *);
}
double *pPxx,,*pFxx;
if(!((ep=engOpen(““ \0”))){//打开开Matlab引擎,建立与与本地Matlab的连接
fprintf(stdeerr,”\n Can’tt start MATLAAB engine\n”));
exit(-1);
}
double Fss[1]={1024};///因为Matlab所有参参与运算的参数都是矩阵的形形式,因而下列几行将参数转转变
double nffft[1]={1024};;//成Matlab可接受受的矩阵形式。
T=mxCCreateDoubleMMatrix(1,10244,mxREAL);
mnnfft=mxCreateeDoubleMatrixx(1,1,mxREAL));
mFs=mxCreaateDoubleMatrrix(1,1,mxREAAL);
mxSetNamme(T,”T”);
mxxSetName(mnffft,”mnfft”);
mxSetName(mFss,”mFs”);
memmcpy((char*)mmxGetPr(T),(cchar*)datax, 1024*sizeof((double));
meemcpy((char*))mxGetPr(mnffft),(char*)nffft, sizeof(ddouble));
memmcpy((char*)mmxGetPr(mFs),,(char*)Fs,1**sizeof(doublle));
engPutAArray(ep,T); //将转化的参数放入引擎擎中,此时可在Matlabb command窗口下查查看此参数
engPutAArray(ep,mnffft);
engPutAArray(ep,mFs));
engEvalStrring(ep,”[pxxx,fo]=psd(T,mmnfft,mFs);”)); //利用引擎执行工具具箱中文件
engOutpputBuffer(ep,,buffer,512);; //如只想看显示图形,,可将返回参数去掉,psdd无返回参数缺省情况下会自自动画图形
result==engGetArray((ep,”pxx”);///取出引擎中的数据放在所指指的区域中供后续处理
pPPxx=mxGetPr(rresult);
ressult=engGetArrray(ep,”fo”));
pFxx=mxGettPr(result);
engEvalStrinng(ep,”plot(ffo,10*log10(ppxx));”);//利用用
文档评论(0)