matlab程序,怎样实现在同一个matlab文件夹操作下的一个m文件利用其它几个文件的运行结果呢?

C语言实现MATLAB_6[1].5中M文件的方法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
C语言实现MATLAB_6[1].5中M文件的方法
C​语​言​实​现​M​A​T​L​A​B​_[]​.中​M​文​件​的​方​法
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢您当前位置:&&&&&&&&&
售前咨询热线
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 *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..15*3.1415926);}double *pPxx,*pFif(!(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,"");engClose(ep);}上述程序在Vc下编译需要将 libeng.dll和libmx.dll两个动态库利用以下的命令:lib/def:&自己的Matlab的安装路径,下同&e:\ Matlab\extern\include\*.def /machine:ix86 /out:*.lib来生成程序所需的静态连接库libeng.lib和libmx.lib,将libeng.lib和libmx.lib所在的目录加入Vc++ project/link/object/library modules下即可。利用Matlab自身的编译器调用工具箱中的函数  Matlab的编译器可将Matlab的M文件转换为为C或C++的源代码以产生完全脱离Matlab运行环境的独立的运用程序,但Matlab本身的资料说明编译器如用来建立独立的运用程序,不能调用Matlab工具箱中的函数,这非常不利于搞一些特殊的算法。本人研究了一段时间发现,工具箱中的函数既然是M文件就一定可以用编译器来编译,以提供如Vc的调用函数,但是编译器只能编译一个独立的M文件,即这个 M文件不依赖于其他的M文件。如果M文件中又调用了其他的M文件,可将被调用的M文件拷贝到调用M文件的相应位置,作适当的改动就可以用于编译器编译。编译器不支持图形函数,所以M文件中如有图形函数需注释掉。当Matlab的编译器mcc加入适当的参数-e(mcc Ce *.*)或-p(mcc Cp *.*)就可生成将输入的M文件转换为适用于特定运用的C或C++源代码。这样如果要在Vc下编译通过,还需连入以下几个库libmmfile.dll, libmatlb.dll, libmcc.dll, libmat.dll. libmx.dll. mibut.dll 以及Matlab C MATH库,建议采用前述的方法将动态连接改为静态连接。对于C/C++编译环境的设置,在Matlab command窗口下运行mex Csetup 然后依提示操作,而对于C/C++连接环境的设置,运行mbuild Csetup依提示操作即可。下面给出利用编译器将Matlab工具箱中psd.m文件生成可供Vc调用的函数。将psd.m文件拷贝一份至Matlab\bin目录下,改写相应调用的M文件如nargchk.m, hanning.m等。为生成的代码简洁,对于采集数据处理输入参数很明了的情况下可作大量的删减,最终使psd.m成为一个不依赖于其他M文件的独立的M文件,注意千万注释掉作图代码,最终改成如下形式,限于篇幅给出关键的几步: function [Pxx,f]=psd(Fs,nfft,noverlap,x)window=o,5*(1-cos(2*pi*(1:nfft)’/(nffft+1)));//hanning 窗dflag=’none’;window=window(;)………………………………….以上只要稍懂Matlab语言和信号处理知识就可完成这项工作。假设上述代码重新存为testwin.m,在Matlab command 窗口下设置好环境参数运行mcc Ce testwin,则可在Matlab\bin下生成testwin.c ,如运行mcc Cp testwin 则生成testwin.cpp. Vc下建立一个基于对话框的文件,然后在对话框里加一个Button控件OnButtonPsd 将上述生成的.c文件的头文件加入到工程的.cpp中,且将#ifdef_cplusplus extern “c”{#end ifc代码声明加入Vc的包含文件和生成的.C的包含文件之间将#ifdef_cplusplus}#end if加入.cpp文件未尾为了简洁且便于处理将生成的c函数稍改动,给出部分代码如下: void CTestpsdwinDlg::OnButtonPsd(){mxArray* x_rhs_;//指向采集数据存放区Fs=23510;//数据采集的频率 nfft=1024;//1024点的fftdouble 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下的图形函数画图R} 如上生成的程序可读性不太好,而生成的c++代码则可读性较好,但千万注意只能用 Matlab的MATH库,不可用c++的MATH库,否则编译会出错,限于篇[1]&[2]&&下一页
幅在此不述。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调用的信号处理程序。运行Mideva在主界面上直打开M文件,在菜单中选择compile to dll,输入testwin..在Matcom debug目录下可以找到这样的几个文件,testwin.c ,testwin.h,testwin.cpp,testwin.lib,testwin.dll,testwin.exp等。 将上述testwin.cpp和testwin.h加入工程中,project/add to project/files并且在相应的文件中加入”stdafx.h” 加连接库:Tools\option\directory\ , 选include选项,加入e:\matcom45\lib (包含matcom.h) library选项,加入e:\matcom45\lib4) 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,//创建矩阵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);}exitM();}可见利用Matcom进行M文件转换非常的容易,生成的代码可读性很好,以上的转换同时生成了可供Vc调用的动态连接库,其使用和一般的动态库一样使用。同时需指明Matcom不仅可转换独立的不依赖于其它M文件的M文件,同时可转换调用其它M文件的M文件嵌套。条件是这此M文件在同一个目录下面,如前所述的psd.m可直接用上述方法转换,生成了多个重载形式的psd函数结论: 利用Mtlab引擎调用工具箱中的函数可节省大量的系统资源,应用程序整体性能较好,但不可脱离Matlab 的环境运行。用Matlab编译器进行工具箱函数的调用,须转换相应的M文件使其成为独立的M文件,且不支持图形函数,转换的代码可读性不太好。用Matcom 进行转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快1.5倍以上。以上程序在Vc++ 6.0,Matlab5.2,Matcom4.5中调试通过,以上方法在工程实践中已得到很好的运用。上一页&&[1]&[2]&
聚生网管官网,反p2p终结者,上网行为监控,限制工作时间看视频,网络监控软件,校园网管理系统
大势至公司网络管理产品:
1、,是国内最早、最专业的局域网监控软件、上网行为控制系统,可以有效管理公司局域网电脑上网行为,有效屏蔽迅雷下载、禁止迅雷上传,禁止pps上传、禁止看qq直播、禁止局域网玩游戏、禁止登录QQ游戏大厅、禁止员工炒股、限制上班看电影、进行局域网带宽限制、控制打开网页、禁止局域网网购、监控邮件内容、监控邮件附件、记录论坛发帖留言、防ARP攻击、查找局域网手机、禁止手机接入公司局域网、禁止私自安装无线路由器上网、防止无线局域网蹭网等;
2、,专业的上网行为管理服务器、比上网行为管理路由器、上网管理路由器更强大,可以有效禁止电脑游戏、屏蔽网页游戏、限制局域网看视频、禁止别人看视频、限制P2P软件使用、禁止快车下载、局域网控制迅雷下载、限制股票软件、禁止上班炒股行为、进行局域网流量监控、限制带宽软件,禁止员工网络购物、屏蔽购物网站、屏蔽网页视频网站,并且独创了&创新直连&监控模式,国内最快捷、最简单、最安全控制多网段电脑上网行为,监控效率和综合性能最强的硬件网络管理系统、上网行为管理系统。
3、,一款强大的USB端口控制系统,有效禁用USB端口使用、屏蔽U口、禁止电脑使用U盘、屏蔽优盘使用、禁用优盘,禁止移动硬盘使用、禁止手机存储卡使用,可以有效地屏蔽USB存储设备而不影响USB鼠标键盘和非USB设备的使用;同时,还可以禁止修改注册表、禁止修改组策略、禁止修改msconfig启动项、禁止修改计算机管理、禁止F8键进入安全模式、禁止U盘启动电脑、禁止光驱启动电脑;此外,还可以只允许电脑访问特定网站,只让打开特定程序、只让运行特定软件或者禁止运行某些程序、禁止访问某些网站等;
4、,是一款强大的共享文件服务器监控软件、服务器文件管理系统、服务器文件访问控制软件,最有效监控服务器共享文件的访问,详细记录修改服务器共享文件、删除服务器共享文件、复制服务器共享文件、剪切服务器共享文件或者打印服务器共享文件的行为,以及重命名共享文件等;同时,记录访问共享文件者的IP地址、MAC地址、主机名和域账号等信息,从而可以为网管员提供详细的服务器文件访问日志,便于加强服务器共享文件管理,保护单位无形资产和商业机密等;
5、,是一款专业的公司局域网接入管理软件、内网接入控制系统,可以有效防止非公司电脑访问公司局域网、禁止外部电脑访问公司局域网、限制外来电脑接入公司局域网、禁止手机接入公司局域网、禁止手机无线上网、限制平板电脑无线上网,检测局域网处于混杂模式的网卡,防止局域网抓包、防止局域网嗅探;同时,还可以查找局域网无线路由器,禁止无线路由器接入公司局域网,禁止无线路由器上网,禁止局域网启用代理,限制员工代理上网,禁止电脑安装代理软件为其他电脑提供代理上网服务等;
6、,是一款专门由于管理共享文件访问、进行共享文件访问权限设置的软件,通过在开启共享文件的电脑或服务器安装以后就可以为本地账号分配共享文件的不同访问权限,这样局域网用户访问共享文件的时候就只能&读取&共享文件而禁止拷贝共享文件的内容、禁止将共享文件另存为本地磁盘、禁止打印共享文件;同时,对共享文件加密后用户访问共享文件的时候将被限定在一个特定的共享文件列表框内访问操作,可以禁止拖拽共享文件、禁止拷贝共享文件、禁止剪切共享文件到访问者自己的电脑,从而也可以防止U盘复制共享文件、防止通过网盘上传共享文件、防止通过FTP上传共享文件以及防止通过QQ将共享文件发送到外面去,从而全面保护了共享文件的安全。
7、&,是一款专门监控FTP服务器文件访问操作日志的软件,可以详细记录局域网用户对FTP服务器文件的上传、下载、修改、删除、重命名等操作日志,可以记录访问者的FTP账户、IP地址、MAC地址和主机名等信息,并可以将FTP服务器文件操作日志导出为Excel格式,从而便于网管员实时审计局域网用户对FTP服务器文件上传和FTP服务器下载文件的情况,便于更好地保护FTP服务器的文件安全,保护单位无形资产和商业机密。
国内领先企业网络管理方案提供商——大势至(北京)软件工程有限公司简介:大势至公司是国内专业的企业上网管理软件、局域网网络管理软件提供商,公司核心产品:聚生网管监控软件(有效禁止局域网下载、禁止局域网玩游戏、禁止在线看视频、禁止上网软件、禁止局域网下载、局域网网速控制软件、局域网禁用随身wifi、禁止上网购物、限制局域网网购、局域网限速管理软件、局域网控制上网软件、局域网流量监控软件、局域网带宽分配软件、上网行为管理系统、计算机网络管理软件、最好用的网管软件、免费网管软件下载、计算机网络管理软件排行榜第一名……);大势至服务器共享文件管理软件(是一款专门监控服务器共享文件访问日志的软件,详细记录服务器共享文件的打开、读取、复制、修改、删除、剪切和重命名等操作,防止删除服务器共享文件、禁止复制服务器共享文件,分配共享文件访问权限,是一款专门的服务器文件管理软件、文件共享服务器监控软件、局域网共享文件设置软件、局域网共享文件管理软件……);大势至网络准入控制系统(一款专门的局域网接入管理软件,禁止外来电脑接入局域网、隔离局域网电脑、禁止电脑相互通讯、检测局域网无线路由器、检测局域网手机、防止蹭网、禁止局域网代理上网、防止网络嗅探、禁止修改MAC地址、禁止修改IP地址、绑定IP和MAC地址、禁止外来电脑上网、禁止外来电脑访问公司文件服务器、禁止访问共享文件、禁止非公司电脑接入公司局域网,实现全面的局域网网络接入控制和安全防范……);大势至电脑USB禁用软件(一款禁用U盘软件、电脑USB接口禁用软件、计算机USB端口禁用软件、微机USB屏蔽软件、禁用USB存储设备、禁用手机存储卡、禁止复制电脑文件到U盘、禁用360随身wifi、屏蔽随身wifi、禁止wifi共享、禁止修改注册表、禁止打开组策略、禁止U盘启动电脑、禁止光驱启动电脑、WIN7禁止安装软件、禁止电脑运行软件、禁止发邮件、禁止网盘上传文件、禁止QQ发文件、禁用光驱、只让电脑运行某个软件、禁止电脑上网、只让电脑打开某个网站、只让电脑运行某些程序等)。大势至四款核心局域网电脑管理软件可以协调配合,为企业提供全面的员工上网行为管理、电脑文件安全管理软件和商业机密保护,保障企业高效率、稳健运转!
京ICP备号 京公网安备您好,我是个matlab新手,下了个程序,里面有好多的m文件,不知道运行哪个?_百度知道
您好,我是个matlab新手,下了个程序,里面有好多的m文件,不知道运行哪个?
老是提示出错但是我找了一个貌似住文件的文件运行,文件我可以QQ传给你,我的QQ是,能不能麻烦您给看下
提问者采纳
M文件运行的话必须要是英文的路径,中文字都不行的,文件夹全部用英文名字命名就行了
提问者评价
其他类似问题
matlab的相关知识
按默认排序
其他3条回答
有几个是函数,你只需要运行其中的主函数就可以了,一般的函数程序名,里面很多的M程序我想的话,就是顾名思义的那种,不是可以单独运行的
发送到我邮箱看看: kevin_
发过来 试下!
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁matlab&在同一个m文件中怎么兼容主程序和子程序
写在一起,必须都是function,
如果你的主程序是普通的m程序,不是function,而子程序是function,这两个程序是不能写在一起的
举个例子:
c=addfun(a,b)
function c=addfun(a,b)
以上是不能写在一个m文件里的。
function mainfun()
c=addfun(a,b)
function c=addfun(a,b)
这样子时可以的,可以直接运行。不过当程序运行结束后,你将无法查看主程序和子程序的变量的值
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。12573人阅读
可能是因为用了 ghost 恢复 Windows xp 系统,或者别的什么原因,反正是双击打开&.m&文件时候,机器就打开
matlab 程序,而不是像以前那样在 matlab 程序的编辑器(matlab editor)里打开,这样是很不方便。更郁闷的是,如果本来已经打开了 matlab 程序,此时双击&.m&文件,会打开另一个
matlab 界面,相当的烦人。
今天在 Windows 7 中重新遭遇这样的问题,未曾想 Windows 7 把“恢复”文件类型关联这样的操作取消了。又费了一番力气才解决。顺便更新本文。
一、Windows XP
打开一个文件夹,依次打开菜单栏的工具(tools)——文件夹选项(folder
再在打开窗口上单击“文件类型”(file
types),在“已注册的文件类型”(registered
file types)中找到“M”文件类型,单击下面的“恢复”(Restore)。
这样就可以了,如果还不行,跳到下面的。
二、Windows 7
打开 MATLAB 程序;
在命令行窗口运行以下命令(复制粘贴进去即可):
cwd= cd([matlabroot '\toolbox\matlab\winfun\private']); fileassoc('add','.m') ;cd(cwd); disp('Changed Windows file association. M-files are now associated with MATLAB. Congratulations!')
随便打开一个包含&.m&文件的文件夹;
右键单击某个 .m 文件,选择 打开方式 ——& 选择默认程序(C);
在弹出的如下对话窗口中按照如图所示选择,并注意下面那个地方打上勾:
选择 M-file 的关联程序为 MATLAB
如果选的是旁边那个 MATLAB Starter,就会在双击打开&.m&文件的时候重新打开一个 MATLAB
程序;如果没有打勾,下次还需要再设置。
上面提到的 MATLAB 命令行在有提到,我就是参考的这里。
三、注意事项
但是,如果已经在matlab程序的File
—— Preferences —— Editor/debugger中(如下图)设定了用别的编辑器打开,那么需要重新设定为“MATLAB Editor”才行。
MATLAB 编辑器设定
提到这个要顺便说一句,这个 MATLAB 的软件运行模式真是好啊:我从 XP 迁移到 Windows 7 的时候直接复制文件夹过来都能运行,不需要重新安装;然后换了台电脑(),版本了,又是直接复制文件夹,照样能运行。不过,问题就是会遇到上面提到的麻烦。好在现在已经不是麻烦了,估计将来的 Windows 8 也可以这么办(上面第二个方法即可)。
原文发表于我的&,无法访问了,郁闷。转入。嗯,今天加上了在
Windows 7 中的解决办法,终于算是有进步了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:348506次
积分:4624
积分:4624
排名:第2678名
原创:85篇
转载:154篇
评论:125条
(5)(1)(1)(2)(6)(11)(13)(3)(1)(1)(2)(8)(1)(4)(6)(3)(13)(9)(1)(23)(4)(4)(4)(1)(2)(3)(23)(8)(1)(2)(4)(4)(8)(9)(1)(1)(8)(11)(8)(5)(7)(6)(1)

我要回帖

更多关于 matlab 文件夹 的文章

 

随机推荐