Matlab环境下调用通用DLL的方法及应用

Matlab环境下调用通用DLL的方法及应用
Matlab环境下调用通用DLL的方法及应用

利用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源文件中的代码为:

实验1熟悉matlab环境和基本操作

实验1 熟悉Matlb环境及基本操作 实验目的: 1.熟悉Matlab环境,掌握Matlab的主要窗口及功能; 2.学会Matlab的帮助使用; 3.掌握向量、矩阵的定义、生成方法和基本运算; 4.掌握Matlab的基本符号运算; 5.掌握Matlab中的二维图形的绘制和控制。 实验内容: 1.启动Matlab,说明主窗口、命令窗口、当前目录窗口、工作空间窗口、历史窗口、图形窗口、M文件编辑器窗口的功能。 2.实例操作Matlab的帮助使用。 3.实例操作向量、矩阵的定义、生成方法和基本运算。 4.实例操作Matlab的基本符号运算。 5.实例操作Matlab中的二维图形绘制和控制。 实验仪器与软件: 1.CPU主频在2GHz以上,内存在512Mb以上的PC; 2.Matlab 7及以上版本。 实验讲评: 实验成绩: 评阅教师: 年月日

实验1 熟悉Matlab环境及基本操作 一、Matlab环境及主要窗口的功能 运行Matlab安装目录下的matlab.exe文件可启动Matlab环境,其默认布局如下图: 其中, 1.主窗口的功能是:主窗口不能进行任何计算任务操作,只用来进行一些整体的环境参数设置,它主要对6个下拉菜单的各项和10个按钮逐一解脱。 2.命令窗口的功能是:对MATLAB搜索路径中的每一个M文件的注释区的第一行进行扫描,一旦发现此行中含有所查询的字符串,则将该函数名及第一行注释全部显示在屏幕上。 3. 历史窗口的功能是:历史窗口显示命令窗口中的所有执行过的命令,一方面可以查看曾经执行过的命令,另一方面也可以重复利用原来输入的命令行,可以从命令窗口中直接通过双击某个命令行来执行该命令,

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/5d5472771.html,.Arrays; using https://www.360docs.net/doc/5d5472771.html,.Utility; 5、添加对Matlab生成的twice.dll的引用。

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调用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基本操作及运算

实验一 MATLAB 基本操作及运算 一、 实验目的 二、 实验的设备及条件 三、 实验内容 1、 建立以下标量: 1) a=3 2) ,(j 为虚数单位) 3) c=3/2πj e 2、 建立以下向量: 1) Vb= 2.71382882????????-???? 2) Vc=[4 3.8 … -3.8 -4 ] (向量中的数值从4到-4,步长为-0.2) 3、 建立以下矩阵: 1) 3 333Ma ????=?????? Ma 为一个7×7的矩阵,其元素全为3. 2) 11191212921020100Mb ??????=??????

Mb 为一个10×10的矩阵. 3) 114525173238Mc ????=?????? 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ((15)/6)111a x e --=+ 2) 2x π= 3) 3ln([()()]sin(/3))x b c b c a π=+-R ,其中R 表示复数实部。 5、 求解函数值22/(2.25)ct y e -=,其中c 取值见题1,t 的取值范围为题2中行 向量Vc 。 6、 使用题1和题3中所产生的标量和矩阵计算等式 1()()T Mx a Mc Mc Mc -=?? 其中*为矩阵所对应行列式的值,参考det 。 7、 函数的使用和矩阵的访问。 1) 计算矩阵Mb 每一列的和,结果应为行向量形式。 2) 计算整个矩阵Mb 的平均值。 3) 用向量[1 1…1] 替换Mb 的最上一行的值 4) 将矩阵Mb 的第2~5行,第3到9列的元素所构成的矩阵赋值给矩阵SubMb 。 5) 删除矩阵Mb 的第一行; 6) 使用函数rand 产生一个1×10的向量r ,并将r 中值小于0.5的元素设置为0。 8、 已知CellA (1, 1)=‘中国’,CellA (1,2)=‘北京’,CellA (2,1)是一个3乘3的单位阵,CellA (2, 2)=[1 2 3],试用MATLAB 创建一个2×2的细胞数组CellA 。 9、 已知结构数组student 中信息包含有姓名,学号,性别,年龄和班级,试用MATLAB 创建相应的结构数组student 。该数组包含有从自己学号开始连续5个同学的信息(如果学号在你后面的同学不足5个则往前排序),创建完成后查看自己的信息。

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基本操作(2016)

实验一 MATLAB 基本操作 一、实验目的 1. 学习和掌握MA TLAB 的基本操作方法 2. 掌握命令窗口的使用 3. 熟悉MATLAB 的数据表示、基本运算 二、实验内容和要求 1. 实验内容 1) 练习MATLAB7.0或以上版本 2) 练习矩阵运算与数组运算 2. 实验要求 1) 每位学生独立完成,交实验报告 2) 禁止玩游戏! 三、实验主要软件平台 装有MATLAB7.0或以上的PC 机一台 四、实验方法、步骤及结果测试 1. 实验方法:上机练习。 2. 实验步骤: 1) 开启PC ,进入MA TLAB 。 2) 使用帮助命令,查找sqrt 函数的使用方法 答: help sqrt 3) 矩阵、数组运算 a) 已知 ??????????=987654321A ,???? ??????=963852741B ,求)2()(A B B A -?+ 答: A=[1, 2, 3; 4, 5, 6; 7, 8, 9]; B=[1, 4, 7; 2, 5, 8; 3, 6, 9]; (A+B)*(2*B-A) b) 已知?? ????-=33.1x ,??????=π24y ,求T xy ,y x T c) 已知??????????=987654321A ,???? ??????=300020001B ,求A/B, A\B. d) 已知???? ??????=987654321A ,求:(1) A 中第三列前两个元素;(2) A 中所有第二行元素;(3) A 中四个角上的元素;(4) 交换A 的第1、3列。(5) 交换A 的第1、2行。(6) 删除A 的第3列。

e) 已知[]321=x ,[]654=y ,求:y x *.,y x /.,y x \.,y x .^, 2.^x ,x .^2。 f) 给出x=1,2,…,7时,x x sin 的值。 3)常用的数学函数 a )随机产生一个3x3的矩阵A ,求:(1) A 每一行的最大、最小值,以及最大、最小值所在的列;(2) A 每一列的最大、最小值,以及最大、最小值所在的行;(3) 整个矩阵的最大、最小值;(4) 每行元素之和;(5) 每列元素之和;(6) 每行元素之积;(7) 每列元素之积。 b) 随机产生两个10个元素的向量x ,y 。(1) 求x 的平均值、标准方差。(2) 求x ,y 的相关系数。(3)对x 排序,并记录排序后元素在原向量中的位置。 4) 字符串操作函数 建立一个字符串向量(如‘ABc123d4e56Fg9’),然后对该向量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。

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环境熟悉及基本操作

实验一 MA TLAB 环境熟悉及基本操作 1. 命令窗口运行入门 1-1 求2 ))39(212(2 -*+的算术运算结果 1-2 简单矩阵A 的生成 1-3 绘制图形比较函数曲线5432x x x x 、、、,要求(一)四个曲线在一个图形文件窗口(二) 子图 2. 命令窗口常用的基本操作 1-4 若用户想计算51) 2sin(21+=πy ,51) 2cos(22+=πy 的值 1-5 变量的保存:save 和load 命令,将已生成的变量保存,名为×××,存入目录C :\my_dir 3. 系统的在线帮助 1-6 help sqrt/help syntax/help (回车) 1-7 lookfor line(查找与直线、线性问题有关的函数) 1-8 help 菜单 实验二 数组(矩阵)及其运算 2-1 用户不能清除的固定变量ans 、eps 、pi 、i 、j 、NaN 、Inf 等 如>>eps Ans=2.2204e-016 2-2 矩阵的创建 (1)>>a=[1 2 3;4 5 6;7 8 9] >>a=[1:2;4:6;7:9]; a1=1:6 (2)利用MA TLAB 内部函数产生矩阵 >>b=eye(3) >>c=ones(2,5) >>d=zeros(3,2) >>e=linspace(-3,6,10) %注意三个参数的含义 >>f=logspace(1,6,5) %注意三个参数的含义 >>R=rand(1,6) (3) 访问元素 >>aa=a(1,2)+a(2,3) >>bb=a(4)+a(8) >>a(end-2:end,2) %在下标中可以直接用end 表示这一维的最后一个元素 (4) 矩阵操作 >>A=[1,2,3;4,5,6;7,8,9] >>B=diag(A) >>C=diag(B) >>D=rot90(A) >>E=reshape(D,1,9) %注意这三个参数的含义 2-3 矩阵运算 (1)算术运算 + - * / \ ^ ‘

VB调用Matlab生成的dll完全攻略(混合编程必备)

用VB调用Matlab生成的dll MATLAB 具有强大的运算功能,VB 具有开发界面友好的特点,可以将二者结合,可以开发出脱离MATLAB 环境的VB程序,即利用VB调用Matlab生成的dll。 工具/原料 Microsft Visual Basic 6 Matlab 7.0 步骤/方法 在MA TLAB 系统中的命令输入comtool命令或点击左下角“Start- > MATLAB - > MA TLAB COMBuilder - > MATLAB COM Builder”,启动MATLAB COM Builder。 建立工程,选择菜单“File - > New Project”,设置工程参数。设置的工程名为COM 组件编译后的文件名称,也可以输入新类,点击“Add”建立新类。

点击菜单“Project - > Add File. . . ”,向工程中加入M或MEX文件。 点击菜单“Build - >COM Object. . . ”,状态窗口出现“Standalone DLL build complete.”说明生成dll成功。

注册生成的myfunc_1_0.dll,在VB中引用MWComUtil.dll和myfunc_1_0.dll,就可以像调用里边的函数了!

插入完成后,Visual Basic中的具体调用方法和命令 此时Matlab中定义的函数: function daoju_gonge(z,x,m,ha,c,b) (函数名daoju_gonge) VB调用 1.先对所有的参数进行定义(关键) Private z As Double Private x As Double Private m As Double Private ha As Double Private c As Double Private b As Double Private theDaoju As myDaoju.Daoju (theDaoju 是自己设定的一个VB中的变量,myDaoju 则是由.m文件编译而成的.dll文件文件名,同时也是其中定义的组件名Component name,daoju则是其类名Class name) 2.调用命令 Call theDaoju.Daoju_gonge(z, x, m, ha, c, b) 3.对VB进行初始化 Private Sub Form_Load() Set theDaoju = New myDaoju.Daoju End Sub 注意事项以及相应问题解决 1.在编译dll时,需要机器安装有C或C++编译器,比如安装VC++6.0 2.Matlab启动Comtool工具之前,还需要利用mbuild –setup 命令对compiler(转换器) 设 置,将转换器设置成C++/C语言对应的compiler,而不是Matlab自带的compiler。 Ps:前两条如果没有做到的话,在comtool生成界面往往出错,无法生成dll等相应的文件。 3.如果出现有其他一些小问题,尝试重启Visual Basic或Matlab,再或者重启电脑。 疑难点: 如果对文件进行处理,使其能够在其他电脑上同样实现设定的功能。 可选方案一:文件打包。 Visual Basic打包程序或是Matlab打包程序。

实验1 MATLAB集成环境使用

实验四浸出制剂的制备 实验一 MATLAB集成环境使用实验目的: 1.熟悉MATLAB的基本环境 2.掌握MATLAB的基本命令 3.掌握简单线性方程组的求解 4.掌握MATLAB的行编辑和页面编辑 实验内容与要求 1.观察MATLAB 的基本环境,熟悉菜单和工具栏 2.MATLAB基本命令的使用 a.运行demos, 观看演示程序 b.工作空间管理命令: who , whos , clear , which , quit ,exit workspace c.路径编辑命令: path, cd ,addpath rmpath d.显示格式命令: type wall.m , more on , type coneball.m , more off ,type coneball.m e.窗口清理命令: coneball2 clc cla clf close f. 操作系统命令: copyfile pwd dir delete mkdir g. 联机帮助命令:help help . helpwin lookfor zoom which rguizoom help rguizoom what ver signal 3.简单线性方程组的求解 以学号 208040401 为例 A=[ 2 0 8 0 4 0 4 0 1] b=[ 208 40 401] x==A\b 4.行编辑与页面编辑 a.键入magic(4) 使用,调出该命令,并改变为magic(6)执行. b.执行coneball命令 edit命令, 打开coneball.m文件 改变文件中的半径和高, 存盘后,重新执行该命令,比较前后的不同. 页脚内容1

CSharp使用DLL进行调用MatLab混编

CSharp使用DLL进行调用MatLab混编 Lanix Beavis 2013/1/27 Beijing Normal University, 978109939@https://www.360docs.net/doc/5d5472771.html, 软件配置 (2) 一、生成DLL库 (2) 1. 函数准备 (2) 2. 环境预设 (2) 3. DeploymentTool生成DLL (3) 二、CSharp调用DLL (6) 1. 添加引用 (6) 2. 调用实例 (6) 3. 加载错误 (7)

软件配置 MATLAB:Version 7.11.0.584(R2010b),64-bit(win64) CSharp:Visual Studio 2010专业版,4.0.30318 RMRel,64-bit(win64) 一、生成DLL库 1. 函数准备 2. 环境预设

3. DeploymentTool生成DLL 点击Desktop->Deployment Tool,点击“here”或->New Project生成新项,此处为M2CTEST.prj 。点击[Add class]生成指定名称的类,点击[Add files]添加M方法文件作为该类下的方法。添加类及方法后,点击打包文件,生成的dll文件在M2CTEST\src目录下。

二、CSharp调用DLL 1. 添加引用 启动Visual Stidio新建新项目,此处项目为控制台应用程序ConsoleApplication2。 在ConsoleApplication2中添加项目引用,右键单击“引用”,点击“添加引用”,包括自己生成的DLL和Matlab环境DLL: M2CTEST\src\M2CTEST.dll Program Files\MATLAB\R2010b\toolbox\dotnetbuilder\bin\win64\v2.0\MWArray.dll 在Program.cs中添加类引用: using https://www.360docs.net/doc/5d5472771.html,.Arrays; //用于数据转换 using https://www.360docs.net/doc/5d5472771.html,.Utility; //用于绘图 using M2CTEST; //自己生成的DLL库,调用Matlab函数 2. 调用实例

matlab生成dll的编译错误

M函数文件编译成DLL文件问题请教 编译环境:MATLAB 7 R14 有如下函数 function y = sample (x)    y = x +1; 保存为sample.m文件,然后执行如下命令编译:(有一个警告信息出现?!) >> m cc -W lib:sample -T link:lib sample   To get started, select MATLAB Help or Demos from the Help menu. Warning: No m atching builtin function available for C:\MATLAB7\toolbox\simulink\simulink\set_param.bi 编译后得到如下一批文件: sam ple.ctf,sam ple.exports,sample.m,sample.dll,sample.h, sam ple_m cc_com ponent_data.c ,sam ple.c,sam ple.exp,sample.lib 其中*.dll文件可以在其他语言(我现在是用Python)中成功调入,当时不能执行函数运算。我查遍GOOGLE的信息,猜测可能的原因是经编译后DLL文件中的函数名不在是原来的函数名(Functions m ay be exported with [b]mangled names[/b])。然后利用软件工具“Dependency Walker ”打开sample.dll则可以看到里面好像有五个函数: _mlfSample _mlxSample _sampleInitialize _sampleInitializeWithHandlers _sampleTerminate [b][color=red]问题请教:[/color][/b] (1)编译时如何控制输出的DLL文件中的函数名? (2)编译时的警告信息为何意? 非常感谢! 回复:M函数文件编译成DLL文件问题请教 我是用-l 参数进行编译的,生成的dll种的函数名都没有下划线。 回复:回复: M函数文件编译成DLL文件问题请教

MATLAB的实验环境及基本命令

实验一 MATLAB 的实验环境及基本命令 一实验目的: 1. 学习了解MATLAB 勺实验环境 2. 在MATLA 系统命令窗口练习有关 MATLAB^令的使用。 二实验步骤 1. 学习了解MATLAB 勺实验环境: 在 Windows 桌面上,用 mouse 双击MATLAB!标,即可进入 MATLA 啲默认界面: 图1-1 MATLAB 系统命令窗口 MATLAB 勺默认界面由三部分组成: ① Comma nd Win dows 命令窗口 ② Comma nd History 历史窗口 ③ Workspace 工作空间 2. 练习MATLA 療统命令的使用。 ①表达式 MATLAB 勺表达式由变量、数值、函数及操作符构成。实验前应掌握有关变量、数值、函数及操作 符的有关内容及使用方法。 三实验内容 练习1-1 :计算下列表达式: 要求计算完毕后,键入相应的变量名,查看并记录变量的值。 a=(1+{10)/2 b=|3+5| c=sin(e±) d = 250 /sin ( ’) 实验过程及结果:a=(1+sqrt(10))/2 a =2.0811 b= abs(3+5*i) b =5.8310 c= si n(exp(-2.3)) c=0.1001 d=250/s in (pi/6) d=500.0000 ②.向量运算:n 维向量是由n 个成员组成的行或列数组。在 MATLA 中,由分号分隔的方括号中的元 素产生一个列向量;由逗号或空号分隔的方括号中的元素产生一个列向量;同维的向量可进行加减运 算,乘法须遵守特殊的原则。 练习1-2 已知:X=[2 ; -4 ; 8] 求:Y=R ; P=5*R; E=X* Y ; S=X * Y 实验过程及结果:R=[tan(pi/4),sqrt(9),-5] R=1.0000 3.0000 - Y=R' Y=1.0000 P=5*R P =5.0000 15.0000 -25.0000 R=1.0000 3.0000 -5.0000

Matlab figure 基本操作

Matlab figure基本操作 set(gcf,'Position',[300 300 700 220]); %调整Figure位置和大小。前两个为离屏幕左下角的X,Y距离,后两个值为Figure窗口的宽和高 set(gca,'Position',[.05 .1 .9 .8]); %调整绘图范围(比例关系)。0.05+0.9为横向比例,最大为1;0.1+0.8为纵向比例。0.05和0.1为距离Figure左下角的X,Y距离 figure_FontSize=12; set(gca,'FontSize',figure_FontSize,'FontName','Arial'); xlabel('Distance (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); ylabel('Thickness (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); box off; %关闭上和右侧刻度线 grid on; %添加网格线 xkd=[10 20 30]; %定义坐标刻度数量 ykd=[100 200 300]; xkd_label=[1 3 5]; %更改刻度 ykd_label=[100 200 300]; set(gca,'xtick',xkd); set(gca,'xticklabel',xkd_label); set(gca,'ytick',ykd); set(gca,'yticklabel',ykd_label); set(gca,'xscale','log'); %改为对数坐标

Matlab调用DLL以及matlab指针参数传递

Matlab调用DLL 本来想把算法写成一个DLL的形式,这样既可以在控制软件中方便调用,又可以在Matlab中通过调用外部DLL的形式对算法进行仿真分析,所以需要了解Matlab调用外部DLL的方法,但是后来发现Matlab调用DLL只支持用C语法写成的DLL,C++的一些关键特性如类、继承等都不支持,用起来的话局限性很大的,还不如单独再用M文件把算法再写一遍进行仿真呢。这里把Matlab调用DLL 的过程记录一下吧,以后有用到的时候再说。 在Matlab的Help中搜索"Calling Functions in Shared Libraries"即可看到关于此内容的帮助文档。 下面以一个简单的小例子演示Matlab调用DLL的过程: 1、编译器准备 在Matlab的命令窗口输入:mex -setup 选择你的编译器,我的是: [2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.0 2、编写你自己的DLL 在Visual Studio 2008中新建一个Win32的Dll工程,不妨设名字为MatlabDllTest,编辑MatlabDllTest.cpp: #include "MatlabDllTest.h" double add(double x, double y) { return (x+y); } 编辑MatlabDllTest.h: #ifndef MATLABDLLTEST_H #define MATLABDLLTEST_H #ifdef __cplusplus extern"C" { #endif

由MATLAB的m文件生成动态链接库的方法说明

由MATLAB的.m文件生成动态链接库的方法说明 李知践 1.把MATLAB编译器(MATLAB Complier: mcc)集成到 VC6.0中 第一步:在安装MATLAB时,要安装MATLAB编译器(MATLAB Complier)。 第二步:在MATLAB命令提示符>>或者DOS命令框中键入命令: mex –setup 进行编译环境选择:VC6.0。 第三步:在MATLAB命令提示符>>或者DOS命令框中键入命令: mbuild –setup 进行编译环境选择:VC6.0。 第四步:在MATLAB命令提示符>>键入命令: prefdir 显示用户 preference 目录位置。 第五步:在MATLAB命令提示符>>键入命令: mccsavepath 然后将MATLAB的work目录中的mccpath文件拷贝到用户 preference 目录中。 保存Complier的路径信息。 第六步:如果使用的是Windows98,要在你的config.sys文件中加入一行: shell=c:\https://www.360docs.net/doc/5d5472771.html, /e:32768 /p 第七步:在VC6.0的Tools -> Customize -> Add-ins and Macro 选中MATLAB add-in for Visual Studio。将会出现MATLAB add-in for Visual Studio 工具栏。 同时MATLAB已在VC6.0的 Wizard 中新增了一项:MATLAB Project Wizard

2.MATLAB Project Wizard 的使用方法 第一步:在VC6.0中选取 File -> New -> MATLAB Project Wizard 建立一个新项目。 第二步:在MATLAB Project Wizard 中,选择项目的应用类型:

相关文档
最新文档