空心雨毕业论文网提供毕业论文、职称论文、硕士论文、计算机论文等的代写服务,同时还提供各种期刊论文的发表。如果你有需要,请联系我们QQ:5599630;电话:13350726595;E-mail:singlehearted@vip.qq.com
RSS
 

Vc 下如何利用Matlab工具箱进行数字信号处理

来源:网络转载 作者:

  1. 假设上述代码重新存为testwin.m,在Matlab command 窗口下设置好环境参数运行mcc –e testwin,则可在Matlab\bin下生成testwin.c ,如运行mcc –p testwin 则生成testwin.cpp.
  2. Vc下建立一个基于对话框的文件,然后在对话框里加一个Button控件OnButtonPsd

    将上述生成的.c文件的头文件加入到工程的.cpp中,且将#ifdef_cplusplus

    extern “c”{

    #end if

    c代码声明加入Vc的包含文件和生成的.C的包含文件之间

    将#ifdef_cplusplus

    }

    #end if加入.cpp文件未尾

  3. 为了简洁且便于处理将生成的c函数稍改动,给出部分代码如下:
  1. void CTestpsdwinDlg::OnButtonPsd(){

mxArray* x_rhs_;//指向采集数据存放区

Fs=23510;//数据采集的频率 nfft=1024;//1024点的fft

double datax[1024]//采集的数据

x_rhs_mxCreateDoubleMatrix(1,1024,mxReal);

memcpy(mxGetPr(x_rhs_),datax,1024*sizeof(double));

noverlap=512;

……………….

……………….

mccCopy(&Pxx,&Spec);

mccCopy(&f,&frevgg_vector);

for(int j=0;j<(int)(nfft/2 1);j )

{

datap[j]=mccGetRealVectorElement(&Pxx, (j 1));//功率谱密度存于datap[]数组

dataf[j]=mccGetRealVectorElement(&f, (j 1));//相应频率存于数组dataf[]中

}

mccFreeMatrix(&Pxx);

……………….

SendMessageBox(WM_PAINT,0,0);//利用Vc下的图形函数画图

Return;

}

 

如上生成的程序可读性不太好,而生成的c 代码则可读性较好,但千万注意只能用 Matlab的MATH库,不可用c 的MATH库,否则编译会出错,限于篇幅在此不述。

3)利用Matcom调用工具箱中的函数

Matcom编译M文件,先将M文件按照与Matcom的cpp库的对应关系翻译为cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件,所以第一次运行要指定c编译器的路径,否则无法编译,指定好的编译信息就写在Matcom\bin\matcom.ini文件中,不过这一步按装matcom时,它自动寻找编译器并将其写入matcom.ini文件中,matcom4.5版中使用TeeChart3.0 OCX控件,因而它支持图形操作。

我们依然用上述的testwin.m文件,不要将图形函数注释掉,利用Mideva来生成可被Vc调用的信号处理程序。

  1. 运行Mideva在主界面上直打开M文件,在菜单中选择compile to dll,输入testwin..在Matcom debug目录下可以找到这样的几个文件,testwin.c ,testwin.h,testwin.cpp,testwin.lib,testwin.dll,testwin.exp等。
  2. 将上述testwin.cpp和testwin.h加入工程中,project/add to project/files并且在相应的文件中加入”stdafx.h”
  3. 加连接库:Tools\option\directory\ , 选include选项,加入e:\matcom45\lib (包含matcom.h)

library选项,加入e:\matcom45\lib

4) project\add to project\files 文件类型选项选(.lib)将e:\matcom45\lib\v4501.lib加入工程中编译运行。相应代码如下:

void CtestmatcomDlg::OnpsdButton(){

double datap[512],dataf[512];

initM(MATCOM_VERSION);//初始化matcom库

Mm Fs,nfft,noverlap;//创建矩阵

Mm x=zeros(1,1024);

Fs=1024;nfft=1024;noverlap=128;

dMm(Pxx_o);dMm(f_o);//创建并命名矩阵

datax[];//数据采集的数据存于此数组中

for(int i=1;i<=1024;i )

{

x.r(1,i)=datax[i 1];//给x阵赋值

}

testwin(Fs,nfft,noverlap,x,i_o,Pxx,f_o);//matcom生成的函数

for(i=0;i<513;i ){//取出功率谱密度分析结果

dataf[i]=f_o.r(i 1,1);

datap[i]=Pxx_o.r(i 1,1);}

阅读更多内容1 · 2 · 下一页>>
20
最新评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
      本站是由一个众多学科的博士群体组建而成,主要创办者为成都各重点高校博士。本论文网内理工科写手均为博士,文科类写手大部分为博士,且领域涵盖广泛,写作势力强大,若有部分专业,没有相关的写手,我们给你寻找合适的写手! 依托强大的人力资源,我们本着诚心交流的宗旨,专门为您排解写作上的难题。从在科研及实践工作中稳扎稳打的经历,我们具备了研究问题,解决问题的能力。论文写作和论文发表,作为教育体系的一个重要环节,我们确实有能力给您解决好问题,正所谓,真金不怕火来炼,请相信我们的势力,没有把握的事,我们不会做!
      本站受多家期刊委托,其中包括国家级中文核心期刊目录正刊,CSSCI目录正刊,增刊,省级以上公开出版的优秀期刊正刊,本站负责论文推荐发表,加急1个月即可发表。本站负责论文发表,不发表承诺退款!!目前主要负责法律,管理,经济,理工,农学,行政,医学,艺术,英语等类论文发表论文代写。详细期刊目录见本站相关内容。
赞助商链接