利用Matlab自带工具箱生成Dll和EXE文件

利用Matlab自带工具箱生成Dll和EXE文件
利用Matlab自带工具箱生成Dll和EXE文件

利用Matlab自带工具箱生成Dll和EXE文件

想到后期开发需要用到matlab与vb或者其他语言进行编程操作,边想着如何利用matlab强大的功能,而又脱离其软件本身进行开发。利用DLL文件与VB混编进行开发是

方法之一。

本以为是一个很简单构建过程,不过还是在不经意间浪费了两天时间。回顾整个安装过程,主要还是没有对整体进行构建,没有借鉴前人的经验啊。。。

构建过程中遇到很多问题。这里简单总结一下安装过程,顺便把Matlab生成dll文件,以及打包生成EXE文件的过程做一下介绍。

我的版本好为:MATLAB R2009a

一、生成独立可执行的程序(dll and exe文件)步骤

1、安装编译器。可有多种选择,本机安装的是Microsoft Visual C++ 6.0(必须装);

2、设置编译器。在matlab命令行输入mbuild -setup,选择安装的编译器为Microsoft Visual C++ 6.0;

这里需要的注意的是,编译器路径,编译文件路径的选择,我选择的都是与Microsoft Visual C++ 6.0相关的默认文件夹。在看到Done字样后,开始在Matlab中设置编译参数。

3、输入deploytool命令(其他版本可能为matcom等),出现以下界面:

4、设置相关的参数。这里可以做很多操作,如图所示,最终结果可生成可供VB调用的dll文件。

启动deploytool后将主程序放到main function里,其他子程序放到other files里,如果有c程序,则放到c/c++ files里.加入你想要编译的m文件,(要加入到自己命名的主目录下,如果还有其他非m文件,放到other files里面)按下编译器就可以编译了.

编译完成后会,就会在当前目录下生成这两个文件夹distrb src

5、编译的最终结果如下图所示.另外,进行打包操作.我选择了Matlab Compiler编译出可直接运行的EXE文件。如图所示,为调用一个m文件,运行后生成波形分解图。

打包过程中会自动将MCRInstaller.exe拷贝到distrib文件夹下,并生成一个bat文件,点击此文件,进行安装软件操作。并自动安装MCRInstaller.exe,此文件为matlab的运行环境。\distrib 下的proname_pkg.exe文件就是安装文件。

二、安装过程中的几个主要问题:

1、mbuild -setup编译环境的设置问题。

2、matlab的版本问题,网上有很多解决方案,但是没一个版本的解决方法是不同的,注意

版本和问题一起搜索。

3、编译环境,一定要注意,VC一定要先安装好,不然设置一直会出错。

Error: An error occurred while shelling out to mbuild (error code = 1).

Unable to build executable (specify the -v option for more information).

??? Error using ==> mcc

Error executing mcc, return status = 1.

4、最后出现了一个小问题,系统环境变量设置的变化。

'cmd' 不是内部或外部命令,也不是可运行的程序或批处理文件。

细看错误提示,估计是环境变量的问题(由于某些原因,环境变量可能被改变或者丢失),于是在系统变量列表中找到变量Path,对它进行编辑,把它的值添加这

个:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

matlab工具箱

至于工具箱的安装说明参见: https://www.360docs.net/doc/7615912885.html,/viewthread.php?tid=120&page=1&fromuid=4481#p id123 Maplesoft《Maple Toolbox for MATLAB》 https://www.360docs.net/doc/7615912885.html,/thread-236-1-1.html Sergiy Iglin《Graph Theory Toolbox》(图论工具 箱)https://www.360docs.net/doc/7615912885.html,/thread-295-1-1.html Koert Kuipers《Branch And Bound toolbox 2.0》(BNB20分支定界工具 箱)https://www.360docs.net/doc/7615912885.html,/thread-226-1-1.html Howard Wilson《Numerical Integration Toolbox》(NIT数值积分工具 箱)https://www.360docs.net/doc/7615912885.html,/thread-225-1-1.html Anton Zaicenco《FEM toolbox for solid mechanics》(固体力学有限元工具箱)https://www.360docs.net/doc/7615912885.html,/thread-219-1-1.html Nicholas J. Higham《The Matrix Computation Toolbox》(矩阵计算工具箱) https://www.360docs.net/doc/7615912885.html,/thread-422-1-1.html Paolo Di Prodi《robotic toolbox》(机器人工具 箱)https://www.360docs.net/doc/7615912885.html,/thread-274-1-1.html Moein Mehrtash《GPS Navigation Toolbox 》(GPS导航工具箱) https://www.360docs.net/doc/7615912885.html,/thread-228-1-1.html J.Divahar 《Airfoil_Analyzer_toolbox》(翼型分析工具箱) https://www.360docs.net/doc/7615912885.html,/thread-218-1-1.html Rasmus Anthin《Multivariable Calculus Toolbox 》(多变量微积分工具 箱)https://www.360docs.net/doc/7615912885.html,/thread-251-1-1.html 《Time frequency analysis toolbox》(时频分析工具 箱)https://www.360docs.net/doc/7615912885.html,/thread-439-1-1.html

利用DLL技术实现LabVIEW和MATLAB混合编程_彭宇宁

计算机与现代化  2007年第8期 JIS UAN JI YU X IAN DA I HUA 总第144期 文章编号:1006-2475(2007)08-0093-03 收稿日期:2006-08-14 基金项目:广西自然科学基金资助项目(0663022)作者简介:彭宇宁(1959-),女,四川成都人,广西大学电气工程学院高级工程师,研究方向:过程控制工程,网络化控制,虑拟仪器技术。 利用DLL 技术实现Lab V I E W 和MATL AB 混合编程 彭宇宁,朱 后 (广西大学电气工程学院,广西南宁530004) 摘要:介绍了利用DLL 技术实现LabV IE W 和MA TLAB 进行混合编程的基本原理,并详细阐述了使用M ATLA B 插件和使用M ATLA B 引擎两种方法的步骤,最后对两种方法进行了比较,总结了基于DLL 混合编程的技术特点。关键词:动态连接库;Lab V IE W ;MA TLAB ;混合编程中图分类号:TP311.13 文献标识码:A Usi n g DLL Techni q ue to Reali z eM ixed Progra mm ing wit h La bVI E W andMATLAB PE NG Yu -ning ,ZHU H ou (Instit u t e o f E lectrica l Eng i neering ,Guangx i Un i ve rsit y ,N anning 530004,China ) Ab stract :T his paper i n troduces t he keystone o f usi ng D LL to rea lize the m ixed prog ramm i ng w it h Lab V I E W and M ATLA B .A t t he sa m e ti m e ,t he st eps of bo t h m ethods are expa tia t ed :using M ATLA B A dd -i n and i nvoking M ATLA B engine .In the end o f t he ar ticle ,w e co m pa re t hese t wo m ethods ,and s umm arize the advantages o fm i xed progra mm ing v ia DLL .K ey w ords :DLL ;LabV IE W ;MA TLAB ;m i xed progra mm ing 0 引 言 Lab V I E W 作为虚拟仪器的开发软件,具有功能完整、应用灵活、易于理解、编程简单、开发效率高等优点,已成为虚拟仪器开发事实上的工业标准。但其在工程计算、图 形处理、先进控制、系统建模和仿真方面远不及MATL AB 功能强大。而MATL AB 在循环处理、图形界面开发、数据输入、网络通信、硬件控制等方面也不如Lab V I E W 。因此实现两者混合编程,将两者的优势结合互补不足,对于开发功能更为强大的虚拟仪器具有巨大的推动作用。目前Lab V I E W 和MATLAB 的混合编程方法有三种:第一种基于A ctive X 控件技术,包括MATL AB 脚本节点和Active X 函数模板;第二种基于动态数据交换(DDE )技术;第三种基于组件对象模型(C OM )技术。前面两种方法都不能脱离MATL AB 环境独立运行,第三种方法相对独立且执行效率较高,但不能全面支持MATL AB 的应用。本文利用DLL (动态连接库)技术将La bVI E W 、VC 、MATL AB 混合编程有机结合起来,提出一种新的LabVI E W 和MATLAB 进 行数据交换和控制的方法。 1 基本原理 DLL (Dyna m ic -Link Li b r ary )-动态连接库是基于W indo w s 程序设计的一个重要组成部分,它由一系列 封装好的可执行代码组成,其内部函数能被其他程序所共享。DLL 的编制与具体的编程语言及编译器无关,只要遵守DLL 的开发规范和编程策略,并安排正确的接口,不管用何种编程语言编制的DLL 都具有通用性。LabV I E W 通过CLF (Ca ll Librar y Function N ode )实现对DLL 的函数 [1] 。另一方面,MATLAB 通 过MATL AB 编译器和计算引擎为C 语言提供了功能强大的接口,可将与MATLAB 通讯的C 代码编制成DLL 文件供LabV I E W 调用,实现LabV I E W 和MAT -LAB 间接数据交换。下面举一个简单的例子(本例已在LabV I E W 7.1,M icroso ftV isual C ++6.0,MAT -LAB 6.5上通过),介绍利用DLL 实现LabV I E W 和MATL AB 混合编程的两种途径。

MATLAB2014aC++代码生成,并用VC2010生成dll供VBA或VB调用使用说明

MATLAB2014a生成C++代码,并用VC2010生成dll 供VBA或VB调用使用说明 一、过程概述 1、使用VC2010生成.dll文件,测试VC程序是否正常 2、使用VBA调用VC2010生成的.dll文件,测试.dll文件调用的VBA代码是否 正常,这里使用Excel VBA主要是为了以后输入输出数据更方便。 3、使用MATLAB编写脚本程序文件,使用MATLAB CODER功能编译成c++文件。 4、VC2010集成MATLAB生成的c++代码,并编译成.dll文件 5、使用步骤1,2验证MATLAB生成的代码 二、具体实施过程描述 1、使用VC2010生成.dll文件 1.1工程建立 首先打开VS 2010--> 新建工程 --> Win32 --> Win32项目 --> 输入工程名称(MakeDll),选择好保存工程的路径-->确定。 在弹出的“应用程序设置”--> "应用成程序型" --> 选择 "DLL(D)" --> 附加选项-> 选择"空项目(E)" ---->点击"完成"进入项目工作窗口

1.2开始创建DLL 第一步: 在头"解决方案资源管理器" --> 头文件 --> 右键 -->添加新建项 ---→选择"头文件(.h)" -->输入文件名称(max) --> 点击“添加(A)”,完成max.h文件的添加。

max.h头文件中的代码为: 1. #ifndef _MAX_H 2. #define _MAX_H_ 3. __declspec(dllexport) int __stdcall fmax(int a,int b); 4. #endif 代码说明: __declspec(dllexport) 的作用是指定导出该函数为DLL函数; __stdcall是函数调用约定,表示该DLL函数被C/C++以外的语言调用; 备注:使用时需要根据实际定义的主函数返回值类型和函数名称修改低3行红色而自体标记部分内容。这里需要修改的是int数据类型,fmax(int a,int b)的函数名称和变量名称和变量的类型,或者直接从第二步的主程序中复制过来。 第二步: 在头"解决方案资源管理器" --> 源文件 --> 右键 -->添加新建项 -->选择"C++文件(.cpp)" -->输入文件名称(max) --> 添加(A) max.c源文件中的代码为:

matlab工具箱如何安装

matlab工具箱如何安装 在matlab的file下面的set path把它加上,把路径加进去后在: file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下。 以下是我在别的地方看到的,转过来你参考一下吧。 首先说说添加到matlab搜索路径好处:1 对n——你只需要存储一个副本,就可以在其他地方使用。具体来说,假设你在数据盘D上新建了两个目录abc和def,这两个工程(每个目录下的所有程序相应地称为一个工程)都需要调用同一个(些)函数(简称工具箱),这时候,如果你没有把该工具箱添加到matlab 的搜索路径下,则需要分别把工具箱中所有用到的文件都复制到目录abc和def下才能正确运行。这显然浪费空间,所以,matlab提供了一个搜索路径(默认在matlab安装目录下的toolbox中),只要把工具箱对应的整个文件夹复制到搜索路径对应的目录下,并且通知matlab一声(把该路径正确添加到搜索路径中),就可以在abc和def中使用这个工具箱了(即无论你的工程文件在哪个目录(有效的目录)下都可以访问这个工具箱中的函数)。下面就以matlab安装目录下的toolbox目录作为默认的添加路径进行详细说明。 1. 如何添加工具箱? 以下是添加工具箱的方法: 如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。如果是单独下载的工具箱,则需要把新的工具箱(以下假设工具箱名字为svm)解压到toolbox目录下,然后用addpath或者pathtool 把该工具箱的路径添加到matlab的搜索路径中,最后用which newtoolbox_command.m来检验是否可以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。具体请看工具箱自己代的README 文件。 1.1 举例: 要添加的工具箱为svm,则解压后,里边有一个目录svm,假设matlab安装在D:\MATLAB6p5,将svm目录拷贝至D:\MATLAB6p5\toolbox,然后运行matlab,在命令窗口输入addpath D:\MATLAB6p5\toolbox\svm回车,来添加路径。然后在svm目录下,任意找一个m文件,以svcinfo.m 为例,在命令窗口中输入which svcinfo.m。如果显示出该文件路径,如D:\MATLAB6p5\toolbox\svm\svcinfo.m,则安装成功,当然也可以在命令窗口输入path来查看。 上面的说明和例子基本上介绍了在matlab中如何添加工具箱,下面是其他补充: 1.2 添加方式总结: 事实上,有两种添加工具箱到matlab搜索路径的方法:其一是用代码,其二是用界面。其实无论用哪种方法,都是修改pathdef.m这个文件,阁下如果是高手,可以直接打开该文件修改,呵呵,对此这里不作讨论。 1.2.1 代码方式: 适用于添加下载的工具箱(别人的): 在命令窗口输入addpath D:\MATLAB6p5\toolbox\svm 或者addpath(‘D:\MATLAB6p5\toolbox\svm’); 但是这种方法只能添加svm目录,如果该目录下有其他子文件夹,并且运行时候“隐式”调用到这些子文件夹(例如假设svm目录下存在子文件夹matdata,该子文件夹下有logo.mat这个文件,且在m文件代码中使用了诸如load logo 这样的句子,即没有显式给出logo.mat的具体路径,则称为“隐式”),则不能正确访问。因此,有必要在添加时使用以下语句把svm目录下所有文件夹都添加到搜索路径中:500){this.resized=true;;}"> 程序代码 addpath(genpath(D:\MATLAB6p5\toolbox\svm)); 另外,如果只使用以上代码,则退出matlab后,新添加的路径不会被保存下来,下次重新启动matlab

最新matlab优化工具箱介绍

m a t l a b优化工具箱介 绍

matlab优化工具箱介绍 分类: Matlab2007-11-03 20:27 6405人阅读评论(0) 收藏举报在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问

5.大型方法的演示函数

9.1.3 参数设置 利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options优化参数。 ● optimget函数 功能:获得options优化参数。 语法: val = optimget(options,'param') val = optimget(options,'param',default) 描述: val = optimget(options,'param') 返回优化参数options中指定的参数的 值。只需要用参数开头的字母来定义参数就行了。 val = optimget(options,'param',default) 若options结构参数中没有定义 指定参数,则返回缺省值。注意,这种形式的函数主要用于其它优化 函数。 举例:

Matlab+Deploy工具的使用--Matlab生成可执行文件

Matlab Deploy工具的使用--Matlab生成可执行文件 通常编写的matlab程序只能在装有matlab的机器上执行,但是没有安装matlab的怎么办呢?这个可以使用matlab的自带工具-Deploy Tool。 Matlab的Deploy Tools 可以方便的将matlab工程编译成所支持的类型,例如一般的Windows应用程序,Matlab for .NET/COM ,Matlab for Java,Matlab for Excel 等。 其原理就是先使用MCC 编译器根据你的m文件生成相应的c语言文件以及数据文件,然后在调用C/C++编译器编译成可执行文件或者控件库。 在Matlab 2007a 中Deploy Tool其实是一个MCC的前端界面(用MCC的命令行参数一样可以完成编译工作) 下面是用Deploy Tool来编matlab工程。 首先创建prj工程,从菜单中定位到“New”-》“Deployment Project” 然后会提示选择类型

然后添加文件

接着你就可以编译了 第一次编译会让你去选择C/C++编译器,运行mbuild -setup 之后matlab会自动搜索系统所安装的C/C++编译器, 然后让你给出选择,matlab自带了LCC编译器,不过可以使用VC的编译器。 选择好了之后你就可以编译了,编译之前你可以设置工程属性,例如通用设置: 可以指定生成的中间文件的路径,编译选项,等等,你还可以设置选择针对哪些工具箱进行扫描:

当然你还可以手动设置C/C++编译器路径,头文件、库文件目录,警告等级等 不过想要你的程序在没有安装Matlab的机器上运行,还有一点要注意,就是Matlab编译出来的程序需要用到Matlab的一些包括但不限于数学、图形等动态链接库,这些是你的程序必要的运行时环境,你可以拷贝 (MatlabDIR)\ toolbox\\toolbox\compiler\deploy\win32\MCRRegCOMComponent.exe 到目标机器安装,然后就有了运行时环境,当然使用Deployment Tool工具可以设置自动打包这个运行时,具体在设置页勾选“Include MATLAB Comptent Runtime(MCR)”:

vs2008中c调用matlab生成的dll文件

VS2008中C#调用Matlab生成的DLL文件 1、创建一个简单的.m文件 打开Matlab 2009a,新建一个.m文件,输入如下代码:function result=twice(inputvar); result=2*inputvar; 将代码保存为twice.m文件,如图所示。 2、使用Matlab DeployTool生成.Net组件 在Matlab 2009a的Command Window中输入deploytool 并回车,如图所示。 就可以打开Matlab的DeployTool,如图所示。 在DeployTool窗体中,点击新建按钮,打开新建项目对话框,如图所示。 在左边的列表中选择MATLAB Builder NE,并在右边的列表中选择.NET Component,我们将这个工程命名为twice.prj,并点击OK,则进入项目设置界面,如图所示。

在Twice文件夹中添加我们刚才建好的.m文件,如图所示。 点击编译按钮或使用快捷键Ctrl+B则对该工程进行编译。编译完成后的主窗口如图所示。 3、创建一个测试用的Windows应用程序,将其命名为MatlabTest,如图所示。 4、添加对MWArray.dll的引用 MWArray.dll一般位于[Matlab安装位 置]\R2009a\toolbox\dotnetbuilder\bin\win32\v2.0文件夹中,我们注意到Matlab 2009a对应的MWArray.dll是2.9.0.0版本的。在进行Matlab版本升级的时候,比较头疼的就是这个dll。 因为版本升级意味着之前生成的dll都需要重新生成。关于版本升级的问题,我将在后面的博文中详细介绍。 之所以添加MWArray.dll,是因为在这种混合编程方式下,我们经常要 using https://www.360docs.net/doc/7615912885.html,.Arrays; using https://www.360docs.net/doc/7615912885.html,.Utility; 5、添加对Matlab生成的twice.dll的引用。

matlab中SVM工具箱的使用方法资料

包已经解压到文件夹F:\R2009b\toolbox\svm matlab中SVM工具箱的使用方法 1,下载SVM工具箱:https://www.360docs.net/doc/7615912885.html,/faculty/chzheng/bishe/indexfiles/indexl.htm 2,安装到matlab文件夹中 1)将下载的SVM工具箱的文件夹放在\matlab71\toolbox\下 2)打开matlab->File->Set Path中添加SVM工具箱的文件夹 现在,就成功的添加成功了. 可以测试一下:在matlab中输入which svcoutput 回车,如果可以正确显示路径,就证明添加成功了,例如: C:\Program Files\MATLAB71\toolbox\svm\svcoutput.m 3,用SVM做分类的使用方法 1)在matlab中输入必要的参数:X,Y,ker,C,p1,p2 我做的测试中取的数据为: N = 50; n=2*N; randn('state',6); x1 = randn(2,N) y1 = ones(1,N); x2 = 5+randn(2,N); y2 = -ones(1,N); figure; plot(x1(1,:),x1(2,:),'bx',x2(1,:),x2(2,:),'k.'); axis([-3 8 -3 8]); title('C-SVC') hold on; X1 = [x1,x2]; Y1 = [y1,y2]; X=X1'; Y=Y1'; 其中,X是100*2的矩阵,Y是100*1的矩阵 C=Inf;

ker='linear'; global p1 p2 p1=3; p2=1; 然后,在matlab中输入:[nsv alpha bias] = svc(X,Y,ker,C),回车之后,会显示: Support Vector Classification _____________________________ Constructing ... Optimising ... Execution time: 1.9 seconds Status : OPTIMAL_SOLUTION |w0|^2 : 0.418414 Margin : 3.091912 Sum alpha : 0.418414 Support Vectors : 3 (3.0%) nsv = 3 alpha = 0.0000 0.0000 0.0000 0.0000 0.0000 2)输入预测函数,可以得到与预想的分类结果进行比较. 输入:predictedY = svcoutput(X,Y,X,ker,alpha,bias),回车后得到: predictedY = 1 1 1 1 1 1 1

Matlab调用MFC应用实例

//MainFunction.cpp #include "stdafx.h" #include "mex.h" #include "MFCDialog.h" voidmexFunction(intnlhs, mxArray *plhs[], intnrhs, constmxArray *prhs[]) { mxArray *pa=NULL; double *x=NULL; double *y=NULL; double *result=NULL; charstrbuf[50]; if(nrhs!=2) { mexErrMsgTxt("You can only input 2 arguements!"); return; } else { x=mxGetPr(prhs[0]); y=mxGetPr(prhs[1]); sprintf(strbuf,"x=%f,y=%f",*x,*y); mexPrintf(strbuf);

plhs[0]=mxCreateDoubleMatrix(1,2,mxREAL); result=mxGetPr(plhs[0]); result[0]=*x; result[1]=*y; mexPrintf("\nStart MFC\n"); MFCDialog *a; a=new MFCDialog(); if(a->DoModal()==IDCANCEL) { mexPrintf("Exit MFC\n"); } mexPrintf("End MFC\n"); } } // MFCDialog.cpp : implementation file // #include "stdafx.h" #include "MFCPlot.h" #include "MFCDialog.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE

Matlab生成P文件及exe文件方法

1.Matlab生成P文件方法: P文件是对应M文件的一种预解析版本(preparsed version)。因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。所以我们就预先作解释,那么以后再使用该M文件时,便会直接执行对应的已解析版本,即P文件。但又因为Matlab的解析速度非常快,一般不用自己作预解析。只有当一些程序要调用到非常多的M文件时,如GUI 应用程序时,才会作预解析,以增加以后的调用速度。 P文件可以用来作保密代码之用,如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。如果你的代码不想被别人看到,那可以给他P文件。pcode函数也可以应用在M函数文件。 Matlab命令:pcode pcode fun pcode *.m pcode fun1 fun2 ... pcode... -inplace Description pcode fun obfuscates (i.e., shrouds) M-file fun.m for the purpose of protecting its proprietary source code. The encrypted M-code is written to P-file fun.pin the current directory. The original M-file can be anywhere on the search path.If the input file resides within a package and/or class directory, then the same package and class directories are applied to the output file. See example 2, below.pcode *.m creates P-files for all the M-files in the current directory.pcode fun1 fun2 ... creates P-files for the listed functions.pcode... -inplace creates P-files in the same directory as the M-files. An error occurs if the files cannot be created. 2.Matlab编译生成exe可执行文件 1、首先要保证你的程序是函数型的,而不是脚本形式的。如果是脚本形式的也不要紧,只需要在脚本文件第一行添加function []=name()即可。

MATLAB调用C++DLL

MATLAB调用C++动态库的方法 声明:本人知识水平有限,文档中难免有错,望谅解! 一、方法步骤 1、首先确定你的动态库正确,并将你的动态库(例如:Demo.dll)和静态链接库 (Demo.lib)和自定义的相关头文件(例如:Demo.h等)拷贝到当前工作目录下,当然也可以将你的动态库拷贝到C盘的windows\system32目录下。 2、写.cpp文件,并用mex命令生成.mexw64或者.mexw32文件(这由你的系统决定), 其实,这个文件起转换作用。也就是说,你用MATLAB调用C++动态库就必须通过 这个文件去调用,而这个文件就是由.cpp文件生成的。 这个.cpp文件中必须包含这个mexFunction函数,格式也必须如下: void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) nlhs:输出参数个数 plhs:输出参数列表 nrhs:输入参数个数 prhs:输入参数列表 不过函数名可以随便取的。在这个函数中你就可以去调用C++动态库的函数了。 记住头文件:”mex.h”…… 注意:保存的文件名就是将来在MATLAB中调用的函数名,而不是这里的函数名。 3、使用mex命令编译XXX.cpp。如:mex xxx.cpp ;那么系统将生成xxx.mexw32或者xxx.mexw64 文件。这个文件的文件名就将是你要调用的函数名; 4、现在就可以写脚本调用这个函数了。 二、案例 1、现在生成了一个C++动态库Demo.dll\Demo.lib,还有头文件Demo.h;里面定义了一个函数 double Demo_Add( double x, double y); //功能:将两个数相加并返回 这些大家都知道,不用我说了吧。 2、在MATLAB中写一个c++文件Test.cpp: #include "mex.h" #include "Demo.h" #pragma comment(lib,"Demo.lib") void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { if( nrhs != 2) //判断输入参数的个数

Matlab编写的程序生成EXE可执行文件的方法

Matlab生成EXE可执行文件 1、M文件生成可执行文件 1.1、Run timeserver的配置 执行这个命令要在命令提示符下进入%matlab%\toolbox\runtime\bin\win32目录。输入:rtsetup -f %matlab%\bin\win32\matlab.exe –s **** 。这儿****代表你输入的N个数字或者字母,它将作为未来开发的应用程序的密码用来识别不同的文件是否出自同一程序。在正常情况下,执行完这居命令以后,dos不会有任何提示符。 1.2、编写在matlab中运行的程序 1.3、编写配置文件 把toolbox\runtime\下面的两个模板文件matlabrt_template.m,和pathdefrt_template.m文件修改程自己的matlabrt.m和pathdefrt.m文件。 1.4、编译生成p文件 把你要编译的源程序放在toolbox\local目录下一个子目录中,然后把这个目录设为matlab的当前目录――一定要保证这一点。 在matlab中输入如下命令: [LOG, DEPFUNOUT, PCODEOUT] = BUILDP({?matlabrt‘}); 如果出现BUILDP finished but there may be file(s) with either problem symbols or EV AL-like constructs. Check BUILDP log for details. 。这是很正常的,很多时候都会出现这个提示。 输入: Depfunout{1} 把它的内容拷到toolbox\runtime\oem\的list.txt中去(如果没有list.txt则新建). 1.5、打包,发布 退出matlab,打开命令提示符,到toolbox\runtime\oem下,执行packege。按照它的提示先后输入matlab的目录,文件列表名称(list.txt),还有应用程序的名称。在toolbox\runtime\oem下生成一个setup程序。

Matlab调用VC生成的dll的具体步骤

Matlab调用C生成的dll的具体步骤一、C生成dll文件(以vs2008为例) 1创建项目: Win32->Win32项目,名称:MyDLL

2新建头文件testdll.h,并编写相关程序 注:一定要注意头文件的写法,此法是支持C的头文件,Matlab调用DLL只支持用C 语法写成的DLL,C++的一些关键特性如类、继承等都不支持,用起来的话局限性很大的,还不如单独再用M文件把算法再写一遍进行仿真呢。

具体程序如下 #ifndef MATLABDLLTEST_H #define MATLABDLLTEST_H #ifdef __cplusplus extern "C" { #endif __declspec(dllexport) double add(double x, double y); #ifdef __cplusplus } #endif #endif 3新建源文件testdll.cpp,并编写相关程序

具体程序如下所示: #include "stdafx.h" #include "testdll.h" double add(double x, double y) { return (x+y); } 4新建模块定义文件mydll.def,并编写相关程序

二、Matlab调用生成的dll 1、编译器准备 1)在Matlab的命令窗口输入:mex -setup

2)选择你的编译器,我的是: [2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.0 2、加载DLL:把编译连接之后产生的myDLL.dll和testdll.h文件拷贝到Matlab的当前工作目录下,并编写.m函数 具体程序 clc; clear all; close all; addpath('dll的具体路径即Matlab的当前工作路径')%输入dll文件具体的存储路径 loadlibraryMyDLLtestDLL.h alias lib%加载MyDLL库,并重命名为lib,注意加载时常常需要MyDLL的头文件 libfunctionsview lib %执行此命令后会生成如下窗口

matlab工具箱的安装方法 ROBOT工具箱精解

robotic toolbox for matlab工具箱下载地址: https://www.360docs.net/doc/7615912885.html,/source/940770 1. PUMA560的MATLAB仿真 要建立PUMA560的机器人对象,首先我们要了解PUMA560的D-H参数,之后我们可以利用Robotics Toolbox工具箱中的link和robot函数来建立 PUMA560的机器人对象。 其中link函数的调用格式: L = LINK([alpha A theta D]) L =LINK([alpha A theta D sigma]) L =LINK([alpha A theta D sigma offset]) L =LINK([alpha A theta D], CONVENTION) L =LINK([alpha A theta D sigma], CONVENTION) L =LINK([alpha A theta D sigma offset], CONVENTION) 参数CONVENTION可以取‘standard’和‘modified’,其中‘standard’代表采用标准的D-H参数,‘modified’代表采用改进的D-H参数。参数‘alpha’代表扭转角,参数‘A’代表杆件长度,参数‘theta’代表关节角,参数‘D’代表横距,参数‘sigma’代表关节类型:0代表旋转关节,非0代表移动关节。另外LINK还有一些数据域: LINK.alpha %返回扭转角 LINK.A %返回杆件长度 LINK.theta %返回关节角 LINK.D %返回横距 LINK.sigma %返回关节类型 LINK.RP %返回‘R’(旋转)或‘P’(移动) LINK.mdh %若为标准D-H参数返回0,否则返回1 LINK.offset %返回关节变量偏移 LINK.qlim %返回关节变量的上下限[min max] LINK.islimit(q) %如果关节变量超限,返回-1, 0, +1 LINK.I %返回一个3×3 对称惯性矩阵

matlab生成dll方法的心得体会

将MATLAB函数编译成dll 供VC调用的方法 1简介 1.1 MATLAB简介 MATLAB名字是由MATrix和LABoratory两词的前三个字母组合而成。是美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。 经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。 目前,MATLAB己经成为应用最广泛的科学工程计算软件,它广泛的应用于自动控制、数学运算、信号分析、图象处理、财务分析等各行各业。用MATLAB 编写的数学运算及图像处理等程序十分简单,在MATLAB里有大量的MATLAB 库函数,包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数、特殊数学函数、插值函数等等,还可以利用MATLAB的编译工具将m文件方便的转化为C\C++语言、可执行程序(exe)、动态连接库文件(dll)、COM组件等等,并可直接供C\C++语言调用。 为什么要用VC与MATLAB接口? 既然MATLAB拥有强大的数值计算功能,利用VC与MATLAB接口可以充分发挥它的数值计算功能,并且可以不依赖MATLAB软件运行,在VC下做出漂亮的界面,把复杂的数据处理交给MATLAB去做。 1.2 MATLAB函数编译为dll与VC之间的通讯方式 1、使用自带的MATLAB Compiler 2、使用MATcom工具 3、在MATLAB下做com组件,在VC中调用com组件(出现了点问题,目前还没找到解决方法,这种方法在m文件较大、用matcom、调用math library 或使用mcc方式无法实现的时候,推荐使用)

matlab生成可独立运行的exe文件

一、生成独立可执行的程序(exe文件)步骤 1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我用的是matlab自带的LCC; 2、设置编译器。在matlab命令行输入mbuild –setup以及mex -setup,选择安装的c编译器。注意“-”之前的空格! 3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help; 当然,也可以输入mcc -m filaname,filaname为要转成exe的m文件; 4、安装\toolbox\compiler\deploy\win32目录下的MCRInstaller。 二、脱离matlab运行可执行程序 MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下: \toolbox\compiler\deploy\win32 文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。在MATLAB里运行可执行程序的办法是在前面加一个“!”比如:!picshow,后缀名可有可无。

在其它没有安装matlab的机器上运行exe文件 1、安装matlab的运行环境MCRInstaller。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。 2、要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。如果没有,也可手动安装,添加的方法是:右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。 (注:在安装过程中会弹出让安装https://www.360docs.net/doc/7615912885.html,Framework可以不用安装。) 3、将编译生成的相相关文件拷贝到同一目录下,双击即可运行。

matlab新工具箱安装

至于Matlab工具箱安装中涉及到了Matlab的搜索路径、工作目录、当前路径、用户路径等好多术语,我这里不想多说什么 感兴趣的网友,可以直接查看Matlab的帮助系统,在那里你可以得到最直接的答复,但是你需要一定的英文基础哦 添加工具箱的方法很多,所有方法都是为了达到同一个目的,将工具箱的所在路径添加到Matlab的搜索路径下就可以了 下面介绍一种最简单的操作吧,下面以安装mathmodl(数学建模工具箱)为例进行说明 a、将你所需要安装的工具箱解压到$MatlabRoot\toolbox中(其实任意路径都是可以的,但是为了方便管理,我们一般都安装在这里),$MatlabRoot是你的Matlab安装路径,你可以在Matlab中输入matlabroot命令获取 (1)在Matlab输入如下内容(当然你可以直接使用资源管理器进入toolbox目录) 1.>> matlabroot 2. 3.ans = 4. 5.D:\Program Files\MATLAB\R2008a 6. 7.>> winopen(ans) 复制代码 (2)此时会自动跳到Matlab的安装目录下,双击打开目录下的toolbox文件夹 (3)将mathmodl工具箱复制到toolbox中

b.将刚才mathmodl的路径添加到Matlab搜索路径下(可以使用Matlab命令行,也可是用Matlab菜单操作,为了简便我们这里使用第二种) (1)在Matlab中如下操作,File——>Set Path...——>点击Add with subfolders... (2)在浏览文件中,选择刚才的安装路径$MatlabRoot/toolbox/mathmodl后,点击确定

相关文档
最新文档