labview调用matlab函数
更新时间:2024-01-30 22:17:01 阅读量: 教育文库 文档下载
labview调用matlab函数的实现
一、用matlab生成dll
1 、mcc编译环境设置
在桌面上右键单击“我的电脑”图标出现以下菜单,单击“属性”菜单项,出现“系统特性”对话框,单击“高级”选项卡,如下图所示
在上图中,单击“环境变量”按钮,出现“环境变量”对话框, 添加系统变量 matlab 值为 F:\\Matlab\\R2012b 即 matlab2012 的安装路径,如下图所示
在环境变量 path 中添加f:\\MATLAB\\R2012b\\bin\\win32: f:\\MATLAB\\R2012b\\runtime\\win32;如下图所示
按“确定”完成设置后, 重启计算机或注销当前用户,即可应用新设置。
2 、 Matlab2012 编译器设置
(1) mex 命令设置
(a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“ mex -setup ”命令后,按回车键,安装 Matlab 编译器;
(b) 命令窗口出现如下提示:
Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2012b/win32.html
Please choose your compiler for building MEX-files:
Would you like mex to locate installed compilers [y]/n?
此时键入 ”y” ,按回车;
(c) 命令窗口出现如下提示:
Select a compiler:
[1] Lcc-win32 C 2.4.1 in F:\\Matlab\\R2012b\\sys\\lcc
[2] Microsoft Visual C++ 2005 SP1 in D:\\Program Files\\Microsoft Visual Studio 8
[0] None
此时键入 ” 2” ,按回车 ;选择 Microsoft Visual C++ 2005的编译器
(d) 命令窗口出现如下提示:
Please verify your choices:
Compiler: Microsoft Visual C++ 2005 SP1
Location: D:\\Program Files\\Microsoft Visual Studio 8
Are these correct [y]/n?
此时键入 ”y” ,按回车 ;确认选择Microsoft Visual C++ 2005 的编译器
(2) mbuild 命令设置
(a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“ mbuild -setup ”命令后,按回车键,安装 Matlab 编译器;
(b) 命令窗口出现如下提示:
Welcome to mbuild -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2012b/win32.html
Please choose your compiler for building shared libraries or COM components:
Would you like mbuild to locate installed compilers [y]/n?
此时键入 ”y” ,按回车 ;
(c) 命令窗口出现如下提示:
Select a compiler:
[1] Lcc-win32 C 2.4.1 in F:\\Matlab\\R2012b\\sys\\lcc
[2] Microsoft Visual C++ 2005 SP1 in D:\\Program Files\\Microsoft Visual Studio 8
[0] None
Compiler:此时键入 ” 2” ,按回车 ;选择Microsoft Visual C++ 2005 的编译器
(d) 命令窗口出现如下提示:
Please verify your choices:
Compiler: Microsoft Visual C++ 2005 SP1
Location: D:\\Program Files\\Microsoft Visual Studio 8
Are these correct [y]/n?
此时键入 ”y” ,按回车 ,确认选择 Microsoft Visual C++ 2005 的编译器,编译器设置完成。
3 、编写 Matlab 函数
用matlab写下addmatlab.m,内容如下。
function c = addmatlab(a,b) c = a+b;
4 、将 Matlab 函数转成 DLL 函数
在 Matlab2012 的 Command Window 下输入命令 : mcc -W lib:libname -T link:lib functionname.m比如
mcc -W lib:addmatlab -T link:lib addmatlab.m 。
注意:functionname.m可以嵌套调用其它的.m和.mex的函数,但不能用load调用数据。
addmatlab.dll addmatlab.h addmatlab.lib
这些文件是我们后面需要用到的。
二、用vs2005包装matlab生成的dll
从addmatlab.h里面可以看到函数原型
extern LIB_addmatlab_C_API bool MW_CALL_CONV mlfAddmatlab(int nargout, mxArray** c, mxArray* a, mxArray* b);其中的参数类型是矩阵型,不能直接在labview中调用,需要用vs2005对matlab生成的dll重新封装一下,生成新的dll,这样labview就可以调用了。操作步骤如下:
1、新建vs2005 DLL项目。
点击文件—>新建项目—选择win32控制台程序,输入名称,按确定。
再点下一步,先择DLL,点完成。
2、复制文件
将上面生成的三个文件addmatlab.dll,addmatlab.h,addmatlab.lib复制到工程目录中,
3、配置工程属性
点击项目,选择属性,打开C/C++常规,在附加包含目录里加入matlab目录。如果matlab安装在F盘,则目录为F:\\Matlab\\R2012b\\extern\\include
点击链接器-->常规,加入附加库目录,路径为F:\\Matlab\\R2012b\\extern\\lib\\win32\\microsoft
点击链接器-->输入,加入附加依赖项,addmatlab.lib mclmcr.lib mclmcrrt.lib
4、编辑源文件
打开addvs.cpp,加入包含的头文件 #include \#include \#include \添加函数
void addtest(double * arg1, double * arg2,int m,double * result) {
addmatlabInitialize();
/* Create the input data */
mxArray *A=mxCreateDoubleMatrix(1,m,mxREAL); //创建一个x4的矩阵A memcpy(mxGetPr(A),arg1,m*sizeof(double)); //给矩阵赋值 mxArray *B=mxCreateDoubleMatrix(1,m,mxREAL); memcpy(mxGetPr(B),arg2,m*sizeof(double)); mxArray *C=mxCreateDoubleMatrix(1,m,mxREAL);
mlfAddmatlab(1,&C,A,B);
memcpy(result,mxGetPr(C),m*sizeof(double)); /* Free the memory created */ mxDestroyArray(A); mxDestroyArray(B); mxDestroyArray(C);
addmatlabTerminate(); return ; }
addmatlabInitialize();addmatlabTerminate();mlfAddmatlab(1,&C,A,B);这三个函数的原型在addmatlab.h里面,并且addmatlabInitialize();addmatlabTerminate();这两个函数必须调用,否则会出错。
mxArray *A=mxCreateDoubleMatrix(1,m,mxREAL); memcpy(mxGetPr(A),arg1,m*sizeof(double));
mxArray *B=mxCreateDoubleMatrix(1,m,mxREAL); memcpy(mxGetPr(B),arg2,m*sizeof(double));
mxArray *C=mxCreateDoubleMatrix(1,m,mxREAL); memcpy(result,mxGetPr(C),m*sizeof(double));
这几句的作用是为了做数据类型转换,把double类型的输入转换成mxArray类型,再把mxArray类型的输出转换成double类型。
5、添加.def文件
添加addvs.def文件,内容为如下, LIBRARY \EXPORTS
addtest @1
并在属性—>链接器—>输入—>模块定义文件中加入addvs.def
这样操作后编译后就会在dubug目录里生成.lib文件,并且能在libview里找到addtest这个函数。
6、build 项目
在dubug目录里生成.dll文件,这个文件后面会用到。
三、用labview调用vs2005生成的dll
新建VI,添加call library function node,双击打开属性页面,在library name and path里找到之前vs2005编译生成的dll,在function name里找到addtest函数。这里要注意的是要把第一节里用matlab生成的addmatlab.dll也放在和addvs.dll相同的目录里,否则labview会报错。
点击parameters卡片,设置参数的类型,再点OK
添加输入变量和输出变量,进行测试。这里以两个四个元素的一维数据相加为例。
运行结果为,调用成功。
正在阅读:
labview调用matlab函数01-30
那次,我选择了坚持作文500字07-08
感恩父母的短诗歌03-21
读书的乐趣作文500字02-06
安全生产法律法规学习心得02-02
电工作业复训题库(最新)含答案06-02
苹果落地的秘密教案03-18
四帮四促民情日记04-01
设备成品机半成品保护方案05-26
第1章 大学计算机基础课程概述08-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 调用
- 函数
- labview
- matlab
- 实验二十二 循环伏安法判断电极过程
- 2009至2010学年第一学期期末考试卷《计量经济学》试题A
- 质量管理目标,责任目标的制定、分解和考核 - 图文
- 经济管理寒假作业
- VB程序设计课后习题答案
- 《思想道德修养与法律基础》试题答案共十套
- 核燃料电池
- 专题 书面表达一经典精讲(上)-讲义 - 图文
- 关于农村经济状况的社会实践调查报告—一以某某村经济状况调查为例
- 公司车辆及驾驶员管理办法(定稿)
- 管理要懂心理学答案2
- 三年级下学期班主任工作总结
- java大题
- 艾诺迪亚4能力点增加属性
- 北京版数学四上《一、多位数的认识》word教案
- 2013年全国各省市高考物理试题汇编 - 图文
- 海工中路(改造)项目--道路桥梁排水施工组织设计方案 2
- 体育学院田径技术课教案(铅球)
- 科学社会主义--辨析题
- 2018年最新初中数学知识点全总结(完美打印版)