利用DLL技术实现LabVIEW和MATLAB混合编程_彭宇宁
LabVIEW与MATLAB联合编程
LabVIEW与MATLAB联合编程
LabVIEW与MATLAB的联合编程⼀般可以通过2种⽅式进⾏:
1. 公式节点[Formula Node]
2. MATLAB脚本节点[MATLAB script node]
1. 公式节点[Formula Node]
位置:函数选板->数学->脚本与公式->公式节点
在程序框图上计算数学公式和类似于C语⾔的表达式。
可在公式中使⽤下列内置函数:abs、acos、acosh、asin、asinh、atan、atan2、atanh、ceil、cos、cosh、cot、csc、exp、expm1、floor、getexp、getman、int、intrz、ln、lnp1、log、log2、max、min、mod、pow、rand、rem、sec、sign、sin、sinc、sinh、sizeOfDim、sqrt、tan和tanh。
2. MATLAB脚本节点[MATLAB script node]【推荐√】
位置:函数选板->数学->脚本与公式->脚本节点-> MATLAB脚本节点
调⽤MATLAB®软件脚本服务器执⾏脚本。
这意味着我们可以采⽤MATLAB语⾔进⾏编程。
下⾯⽤⼀个例⼦展⽰如何使⽤MATLAB脚本节点:
我们需要产⽣⼀个正弦信号,程序框图如下所⽰
结果前⾯板所⽰
注意:在退出LabVIEW前,请不要⾃⾏关闭MATLAB窗⼝。
LabVIEW与Matlab_Simulink混合编程方法及应用_黄世奎
(b)LabVIEW的 ActiveX编程运行效果 图 3 LabVIEW的 ActiveX编程与运行效果
基于 ActiveX自动化技术的开发方式可以更加灵 活地对 Matlab进行控制 , 方便地使用 Matlab的各种工 具箱 , 适合于较大的应用程序开发 , 但在调用大型算法 时 , 经常会遇到数据类型的转换 , 尤其是变体与其他类 型的转换 , 因此 , 必须明确输入 、输出数据的具体类型 , 而且要尽量减少数据传输量和启动 Matlab自动化服 务器的次数 。 2.3 利用 COM组件技术
1 引 言
LabVIEW是目前应用最广 、发展最快 、功能最强 的图形化虚拟仪器软件开发集成环境之一[ 1] , 尽管如 此 , 它对于一些需要进行大量数据运算处理的复杂应 用仍显得有些力 不从心[ 2] 。 而 Matlab是一个为科学 和工程计算专门设计的高级交互式的软件包 。 Matlab 集成了各种领域的数据处理工具包 , 是一个可以完成 各种计算和数学处理的可视化 、强有力 、易于使用和理 解的工具 [ 3] , 但在 循环处 理 、图形 界面 开发 、信号 测 量 、网络通信 、硬件控制等方面明显逊色于 LabVIEW。 因此 , 将 LabVIEW与 Matlab/Simulink混合编程 , 实现 两者相互通讯 、优势互补 , 对于开发功能更为强大的智
(a)fuzzyPID程序框图
(a)LabVIEW的 ActiveX编程
(b)模糊控制系统的输入 、输出曲线 图 2 基于 MatlabScriptNode混合编程技术的应用实例
该 实例中 的 fuzzyPID算法是 由 Matlab/Simulink 构建 , 然后通过在 MatlabScriptNode中编写脚本程序 使之能在 LabVIEW环境下运行 。
基于labview和matlab混合编程的实时自适应滤波系统
12
阅陨粤晕在陨 悦匀粤晕孕陨晕 运耘运粤韵X陨晕郧 再哉 匀哉粤晕允I晕郧 杂匀陨再粤晕
第1期
任静宜等院 基于 LabVIEW 和 MATLAB 混合编程的实时自适应滤波系统
0 引言
目前袁 在信号降噪滤波过程中袁 自适应滤波 器的使用非常广泛袁 该滤波器不需要关于输入信 号的先验知识袁 而是依靠递归算法进行运算袁 在 不能得到有关信号特征的完整知识的环境下袁 逐 渐地估计出所需要的统计特性袁 特别适用于实时 处理遥 自适应算法主要有最小均方误差算法 渊LMS院 Least Mean Square冤 和递推最小二乘算法 渊RLS院 Recursive Least Square冤 两种基本的算法 [1]遥 LMS 算法与模型无关袁 跟踪特性较好袁 结构相对 简单袁 运算量较小袁 是目前使用得最广泛的自适 应滤波算法遥 在实际工程应用中袁 硬件实现算法 时袁 需考虑硬件的面积尧 成本尧 速度和功耗等因 素袁 虽然 RLS 算法收敛速度较快袁 但需要大量的 数学计算袁 在硬件实现上复杂度较高 [2]遥 而 LMS 算法计算简单袁 仅需要 2N+1 次乘法和 2N 次加法遥 因此目前仍以 LMS 算法为主袁 并在近年出现了数 据 块 最 小 均 方 误 差 渊 BLMS院 Block Least Mean Square冤 算法和快速块最小均方衰减 渊FBLMS院 Fast Block Mean Square冤 算法袁 用于减小自适应滤波器 的计算复杂程度并改善传统 LMS 算法的不足 [3]遥
theexperimentalresultsshowthattherealtimesoundsignalnoiseisprocessedintimeandtheefficiencyofrealtimesoundrecognitionisimprovedafterpassingthefilteringsystemkeywords院labview曰matlab曰hybridprogramming曰adaptivefilter曰lmsalgorithm曰dllfiles收稿日期院20190528作者简介院任静宜渊1998冤袁女袁山东潍坊人袁南昌航空大学测试与光电工程学院袁主要研究方向为信号处理遥通信作者院龙盛蓉渊1979冤袁女袁湖北荆州人袁南昌航空大学讲师袁博士袁主要从事传感器与信号处理方面的教学与研究工作遥电子产品可靠性与环境试验耘蕴耘悦栽砸韵晕陨悦孕砸韵阅哉悦栽砸耘l陨粤月陨蕴i栽再粤晕阅耘晕灾陨r韵晕酝耘晕栽粤蕴栽耘杂栽陨晕郧计算机科学与技术阅陨粤晕在陨悦匀粤晕孕陨晕运耘运粤韵x陨晕郧再哉匀哉粤晕允i晕郧杂匀陨再粤晕12阅陨粤晕在陨悦匀粤晕孕陨晕运耘运粤韵x陨晕郧再哉匀哉粤晕允i晕郧杂匀陨再粤晕第1期图1自适应滤波器的原理图fir横向数字滤波器x渊n冤lms自适应算法y渊n冤e渊n冤d渊n冤移0引言目前袁在信号降噪滤波过程中袁自适应滤波器的使用非常广泛袁该滤波器不需要关于输入信号的先验知识袁而是依靠递归算法进行运算袁在不能得到有关信号特征的完整知识的环境下袁逐渐地估计出所需要的统计特性袁特别适用于实时处理遥自适应算法主要有最小均方误差算法渊lms院leastmeansquare冤和递推最小二乘算法渊rls院recursiveleastsquare冤两种基本的算法1遥lms算法与模型无关袁跟踪特性较好袁结构相对简单袁运算量较小袁是目前使用得最广泛的自适应滤波算法遥在实际工程应用中袁硬件实现算法时袁需考虑硬件的面积尧成本尧速度和功耗等因素袁虽然rls算法收敛速度较快袁但需要大量的数学计算袁在硬件实现上复杂度较高2遥而lms算法计算简单袁仅需要2n1次乘法和2n次加法遥因此目前仍以lms算法为主袁并在近年出现了数据块最小均方误差渊blms院blockleastmeansquare冤算法和快速块最小均方衰减渊fblms院fastblockmeansquare冤算法袁用于减小自适应滤波器的计算复杂程度并改善传统lms算法的
Labview和Matlab混合编程方法的研究与实现
Labview和Matlab混合编程方法的研究与实现柴敬安;廖克俭;潘德辉;李淼【期刊名称】《计算机测量与控制》【年(卷),期】2008(16)5【摘要】LabVIEW是一种高性能的图形化虚拟仪器编程软件,它在测试与测量、过程控制与处理,科学研究和分析等方面有广泛的应用,但是,LabVIEW在数值分析和数据运算处理等方面显得有些力不从心;通过其强大的外部接口.提出了基于DDE,DLL,ActiveX自动化,MATLAB Script节点技术的LabVIEW和MATLAB混合编程,并结合小波降噪、虚拟模糊热点温度分析仪实例,对这些方法进行了比较分析;利用混合编程既良好地发挥了仪器语言的优势,又扩展了算法工具箱,探索了智能虚拟仪器新的开发途径.【总页数】4页(P737-739,745)【作者】柴敬安;廖克俭;潘德辉;李淼【作者单位】辽宁石油化工大学,石油化工学院,辽宁,抚顺,113001;辽宁石油化工大学,石油化工学院,辽宁,抚顺,113001;辽宁石油化工大学,石油化工学院,辽宁,抚顺,113001;抚顺市质量技术监督局,辽宁,抚顺,113006【正文语种】中文【中图分类】TP31【相关文献】bVIEW与Matlab/Simulink混合编程方法及应用 [J], 黄世奎;彭宇宁;谢树平;韦德晖bview和Matlab混合编程方法在生物医学信号分析中的应用 [J], 于璐;张勇德;沙宪政BVIEW和MATLAB混合编程方法研究及其在柴油机故障诊断中的应用 [J], 李沈;李森;刘俊磊;侯祥林4.MATLAB/Simulink与LabVIEW的混合编程方法 [J], 谢树平;朱后;李黎;彭宇宁5.Matlab与LabVIEW混合编程方法应用研究 [J], 徐何;李滔;李勇因版权原因,仅展示原文概要,查看原文内容请购买。
基于动态链接库调用方法的LabWindows与MATLAB混合编程
科 黑江— 技信总 — 龙— —
基于动态链接库调用方法的 L b n o a Wid ws 与 MA L B混合编程 T A
张 静 陈 于扬
( 华北 电力 大学 电子 与通信 工程 系 河北 保 定 0 10 ) 70 3
摘 要 : 出一种基于动态链接库调 用方法的 Lb i o s MA L B混合编程技术 , 提 awn w 与 d TA 该方法只需要在 目标机上安装 MC R便 可以使程序脱 离 M | Ar _ L B 大的运行环境独立运行 , L b i o s V 与 M T  ̄ A 庞 将 aw dw/ I A L B强大科学计算能力相结合 , 高了虚拟仪器软件开发效率。利用动态链接库调 用方法和 n C 提 M TA A L B强大的小波分析工具箱的功能, 对电压闪变包络信号提取, 结果表 明 Lb idw/V 针对 M T A a wno s I C A L B动态链接库调用技术使得虚拟仪器软件开发
更加 高效 。
关键词:aWi o s V ; nAB; Lb n w/ IMA d C 动态链
命令 的选项 ,可将 m文件编译成 c + 源代 , + c
L b no s V aWidw/ l和 MA C Ⅱ B都 是 当 今 非 码 、 e m x文件 、b文 件、l文件 、x u dl ee可执行 文件 常流行 的控制系统分析和设计软件 ,但二者各有 等 。生 成 c 语 言 动 态 链 接 库 命 令 : c — mc B
侧重点和优缺点。 前者是美 国国家仪器( a o l chr l :l N tn sa di 【b文件名】【 ia e b i m文件名] 。 I tm n , I n r et N ) s u s 公司开发的面 向计算机测控领域 2 . 2程序的发布 的交互式 C语言软件开发平台,可以在多种操作 无论编译之后生成的是可执行文件还是库文 系统平台上运行。Lb I0 V 丑 widw I以A S l N IC为 件, 要使其能够发 布到没有安装 M T A A L B的计算 核心, 将功能强大 、 使用灵活的 c 语言平台与用于 机上使用 , 必须在 目标计 算机上安装 M R 可 以 C。 数据采集分析和显示的测控专业工 具有机地结 利用 M T A 命令 b im r 创建可以发布给 AL B u d c来 l 合。它的集成化开发平台、 交互式编程方法、 丰富 最终用户的 MC R安装文件。一般来说 , 需要发布 的功能面板和库 函数大大增强了 c语言的功能 , 的文件有 3个 :. a 编译得到的可执行文件或者库 为熟悉 C语言的开发人员开发建立检测 系统、 函数出.C F文件;. Rntlri。 自 T c MC Is e.p l a z 动测试环境、 数据采集系统。 虚拟仪器提供了一个 在最终用户的计算机上 , 首先需要把 M Rn C I— 图 I 包络信 号提取 理想的软件开发环境 , 然而要实现测控领域一些 s l ri解压 , tl .p ae z 并把 MC R中可执行文件所在 目录 ys f p 8 t l; =i 2 i ‘is n l) 先进的理论和方法 , 如神经网络 、 遗传算法、 模糊 加到系统路径上 , 然后就可以使用编译后的程序 v l( 0 .E = 1 6 v v .2 = .x : 理论等方面 , 需要官方额外提供的工具箱。 一般价 了。 n me d ; a =' b' 格不菲。而 M A B拥有强大 、 AL 丰富的内置函数 , 3动态链接库技术的应用 强大的科学计算功能和灵活的接 口 技术,其强项 电网中 存在的非线性负荷会使供电电压 的有 【.= ane(,,nme; c1 w v cv7w a ) ] d 在于数学运算。丑 widw v Lb r0 I与 MA L B的有 效值及波形发生变化 , I TA 影响供 电质量。 传统的检测 a - ro ' ',w m ,) 6 wcd ",l m e ; " ( c, a 7 6 : 机结合, 可以相互弥补, 设计出功能强大的虚拟仪 方法用 F _算法分析稳态调幅波,不能分析幅值 a6=a —1 f’ I ( ' ' 器软件【1 l。 - 4 时变的闪变信号目 。小波变换是一种信号的时间一 stc,Vsbe, t; e gf iil'd 3 stc q v e gf ne (,  ̄ y" 3 qf o 现在普遍采用 的 【b n0 v 与 MA — 频率分析方法, 丑 widW I T 具有多分辨率分析信号的特点 。 而 stc ' pr ns 'a m t s eg f aeU i " f e r ( , P t, i e 3  ̄ A L B混合编程技术主要 有两种 : A I M TAB引擎调 且在时域和频域内都具有表征信号局部特征的能 stc ' pfo fn, ,7 D eg f ae 'io ' 0 , ; ( , P 6 i [ .5 0 用技术、 V 提供的 A t eX CI cv 服务控件接 口, i 都存 力 。 因此在电压闪变信号分析中, 采用小波变换能 sb lt 1) up ( 1 o2 l  ̄) t 在各自的优缺点 , 而且两者都脱离不了 M T  ̄ 有效提取电压闪变信号的调幅波。应用小波分析 po(6 A LB x B 3 0 -1l 庞大的软件运行环境 ,使用起来较复杂 。提出将 进行电压闪变中包络信号的提取主要涉及到小波 丑 i .5 0, 。 dc - r d'', rme ) e mp wc ( ,l m . ; o dc , w 1 M TA A L B的 I n文件编译成动态链接库 ( L D L文 的分解与重构 , 其过程主要分为以下 2 个步骤。n sbl ( 1 a S030 ,1 D upo 2 ; i , 0- , ; t. x 5 1 件 ) Lb i o s V 调用 , 供 a W n w/ I d C 使用起来较为简单 , 信号的小波分解 ,选定一种小波族和设定滤波器 po(emp; l de ) t 只需在 目标 机上安装 M T A A L B运行库就 可独立 长度, 对信号进行 N层分解 。b . 信号的小波重构 , Yae ̄d,u 2t 1 ; lbl'' m s(} n r D p n " je' e p ; i( r t dpg 'm 3 - , t 使用。 对分解后的信号的低频和高频进行重构。 d. d n o )ed 2动态链接库技术 31 .基本 电压闪变信号模型建立 将 m文件编译成动态链接库之后 , 需要将生 21 .编译动态链接库 电压 闪变是由电网电压的幅度起伏变化所引 h文件、b文件 、1文件拷贝到工程 目录下 l i dl 在安装 M T A A L B程序时,选择默认安装模 起的, 所以电压波动与闪变信号用调幅电压表示 : 成 的. 除此之外还需拷贝 M T A A L B库函数 中 f ) ( o ( t =42 [+M sV ) o ( t ) V1 c ( ̄ ] sw ) o c 进行调用, 式, 编译器便会被安装到机器中。首次使用之前 , ( : ^ fe sw ) 的 l m . 、 a ih m lc.、 cm ri 等 文 i xi m tx 、 c r m lc.b b 1 b r. m h 1 ( )为包络信号 需 要在 M T A A L B环境 中配置 CC + / + 编译器 , 在 件。 Widw 上, T ̄B编译器支持以下 3种 CC + no s MA I /+ V为工 频 电压额 定值 3 V 程序运行 .C I 3 编译器 : M为调频幅值,其值一般为 l %,最高可达 L b idw /V 核心 代码 如下 : awno s l C 211Maa 本身提供 的 L cC编译器 , . f] i) c 这 1 % 0 it VC L B C xc t i a e m c t l h vn n C IA L A K E eu n pn1 o r teet e( t .i n o i , W 为工 频 角频 率 是一个免费的 c编译器, 但它不能编译 c + + 程序。 v i clb c Daa n vn Da .it v IDaa 1 od al ak t,ite e t t n eel t2 M t 21 0l dc + .2B r n + :适用 版 本 53 .、5 . a -、54 . 5 W为调制信号的基波角频率 { 及 56等版本。 . ∞ y I; n 32MA A . 耵.B程序设计 d u l o = ; o be n O u co = b ae ) i ] g 21 c o i a /+ ( V )适用版 fnt nI d w v( . Mi f Vs lCC +MS C: 3 ms t u h= 2 0 3 0; si h( e0 wt e n c v 本为 6 、70及 71 . . 0 .。 N= 2 0 3 0; f 动态链接库的生成需要 以下 3个步骤 :. a 编 t 0: 1: c 8 EN CO a e EV T MM I T: = N一 写 m��
Matlab和LabVIEW混合编程的实现
欢迎订阅欢迎撰稿欢迎发布产品广告信息E I C Vo l .15 2008 No.2 101 图3 Soble 算子处理图 图4 二值图 3 二值化整幅图像画面仅有黑白二值的图像就是二值化图像。
二值化的目的是将采集得到的多层次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。
对图像进行二值化处理的关键是阈值的合理选取。
阈值设置过小易产生噪声;阈值设置过大会降低分辨率,使非噪声被视为噪声而滤掉[5]。
本文采用的是最优阈值原理:统计每幅图像灰度的分布特性,利用类别方差作为判据,选取使类间方差最大值作为选定的阈值。
二值图如图4所示。
4 结束语本文通过对运动车辆的视频进行中值滤波,Soble 算子提取图像的边缘信息,接着进行二值化处理,为以后的识别提供了良好的基础。
利用VC ++编制人机交互友好界面,实现数字逻辑变换及道路图像处理。
该算法具有良好的实时性和可靠性。
□参考文献[1]布洛基,布图兹等.智能车辆[M ].人民交通出版社,2002.11.[2]高守传,姚领田等.V isual C ++实践与提高[M ].中国铁路出版社,2005.12.[3]王晓东,丁冬花.实时车辆检测和跟踪系统设计[J ].微计算机信息,2006,11(2):237-239.[4]王艳春,李建军,何鹏,尹明.公路交通管理中行驶车辆自动识别技术研究[J ].微计算机信息,2006,11(2):193-195.[5]王荣本,游峰,崔高峰等.基于计算机视觉高速车辆的道路识别[J ].计算机工程与应用2004,9(26):18-21.作者简介:胡会珍(1983-),女,汉族,硕士,主要研究方向为控制理论与控制工程,现中北大学在读硕士研究生;黄晋英(1971-),女,汉族,副教授/硕士生导师,主要从事智能控制,模式识别研究。
基金资助:山西省青年科技基金(编号:20051015)收稿日期:2007210230(7672)文章编号:167121041(2008)022*******M a tla b 和La bV I E W 混合编程的实现李霄燕,杨俊宇,赵 佳(长春工业大学电气与电子工程学院,长春130012)摘要:基于M a tla b 强大的计算功能和La bV I EW 的界面良好的特点提出用M a tla b 和La bV I EW 混合编程,将二者有机结合起来,使在锅炉管板焊接中,能够轻松得到不同位置焊接管口的轨迹方程,实现自动焊机对焊接轨迹的良好控制。
基于LabVIEW和MATLAB混合编程的PID控制策略研究
第28卷 第5期2006年10月电气电子教学学报J OU RNAL OF EEEVol.28 No.5Oct.2006基于LabVIEW和MAT LAB混合编程的PID控制策略研究郭一楠,程 健,巩敦卫,李 明(中国矿业大学 信息与电气工程学院,江苏徐州221008)摘 要:PID控制策略应用广泛,同时也是“过程控制”课程教学内容中最为不可缺少的一部分。
为有效促进学生对该策略的直观理解,使学生在实际控制系统中能灵活应用,提出基于虚拟仪器技术和仿真技术的PID控制策略虚拟仿真。
系统包括控制规律选取和参数整定两部分,采用面向实例的动态分析式教学实现与学生的互动。
系统采用LabVIEW和MA TL AB混合编程,实现了动态显示和交互分析的有机结合。
实际运行表明,该系统可以有效加深学生对PID控制策略理论的理解,激发学生的学习兴趣。
关键词:PID;LabVIEW;MA TLAB中图分类号:TP202 文献标识码:A 文章编号:1008-0686(2006)05-0027-06 Development of PID Control Strategy B ased on LabVIEW and MAT LABGU O Yi2nan,CHENG Jian,G ONG Dun2w ei,L I Ming(S chool of I nf ormation and Elect ronic Engineering,Chi na Univercit y of Mi ni ng&Technology,X uz hou221008,China)Abstract:PID(Proportion Intcegral Differential)cont rol strategy is used widely and taken as a necessary teaching content s of p rocess cont rol.In order to facilitate st udent s to comp rehend t his st rategy effectively and use it flexibly,virt ual simulation system of PID control st rategy based on virt ual inst rument and simu2 lation technology is p ut forward.Cont rol rules’selecting and parameters’t uning are two key problems in t he system.Dynamic teaching mode is adopted to realize interaction wit h st udent s in t he system.The sys2 tem is developed by LabV IEW and MA TL AB.It realizes dynamic show of variables in t he p rocess and in2 teractive analyses.Act ual runing indicates t he system can facilitate t he understanding to PID cont rol st rat2 egies and inspire st udent s’interest of learning.K eyw ords:PID;LabV IEW;MA TL AB0 引言PID控制策略在实际工业过程控制系统中有着广泛的应用,它也是“过程控制系统”课程教学内容中最为不可缺少的一部分。
1_基于数据库的LabVIEW与Matlab混合编程及其实现
收稿日期:2006-04-04作者简介:徐峰,硕士,专业为控制理论、控制工程;田作华,教授,博士生导师。
基于数据库的Lab V I E W 与Matlab 混合编程及其实现徐 峰,何黎明,田作华(上海交通大学自动化系,上海 200240)摘要:介绍了在Lab V I E W 中实现与数据库通信的几种方法,以及Lab V I E W 和M atlab 混合编程的几种实现途径。
并以配方优化系统为背景,利用DLL 技术和ActiveX 技术在Lab V I E W +MyS QL +Matlab 构架下实现线性规划算法,为在Lab V I E W 环境下解决基于数据库的复杂算法提供了一种实现途径。
关键词:Lab V I E W ;Matlab;MyS QL;线性规划中图分类号:TP311 文献标识码:A 文章编号:1000-8829(2007)02-0070-03Form ul a ti on O pti m i za ti on w ith M a tl ab and LabV I E W Ba sed on Da t aba seXU Feng,HE L i 2m ing,TI A N Zuo 2hua(Depart m ent of Aut omati on,Shanghai J iaot ong University,Shanghai 200240,China )Abstract:Some methods of database operating in Lab V I E W are described,and three kinds of s oluti on in constructing virtual instru 2ment using Matlab are als o p r ovided .How t o realize linear p r ogra mm ing under the truss of Lab V I E W +M yS QL +M atlab is intr o 2duced,and this realizati on will definitely p r ovide a way t o s olve s ome comp lex algorith m depending on database in Lab V I E W.Key words:Lab V I E W;M atlab;MyS QL;linear p r ogra mm ing M atlab 是以矩阵运算为基础的一种数学软件。
MATLAB_Simulink与LabVIEW的混合编程方法.kdh
*广西科学基金资助项目(桂科基0663022)LabVIEW和MATLAB在应用领域方面侧重点不同,各有优势领域。
从应用程序接口技术出发,LabVIEW和MATLAB/Simulink混合编程的方法可分为:基于数据共享、基于源码转换和库引用、基于对MATLAB计算引擎的控制、应用LabVIEW扩展包SIT和应用MATLAB工具包RTW等五种类型,下面对这些方法进行简单的介绍和比较,以供开发者参考。
1基于数据共享的方法其主要思路是构建一个数据共享的通道,来发挥MATLAB强大的数值处理功能。
这其中包括参数数据的预处理和结果数据的总结分析处理,也可以进行非实时性中间数据的处理。
1.1通过剪贴板或数据文件(表格、文本和二进制文件)这是一种最原始也是最简单的应用方法,它适合于一些后续的数据分析和结果验证。
LabVIEW中的关于将数据保存到文件的VI很丰富,可以导出格式很多,同样MATLAB能接受的文件类型也是非常丰富。
此方法可以通过在LabVIEW中的“WriteToSpreadsheetFile.vi”、“WritetoTextFile.vi”、“WritetoBinaryFile.vi”等VI,将数据写入.xls、.txt、.dat等格式的文件,然后通过MATLAB中的load函数将数据导入MATLAB空间中,之后再进行相应的处理。
1.2DDE动态数据交换(DynamicDataExchange,DDE)是Win-dows操作系统中一种基于消息的进程间通信协议。
LabVIEW提供了DDE通信VI,利用这些VI可以创建DDEServer或DDEClient,完成接收/发送数据、请求/提供服务等功能。
LabVIEW调用MATLAB功能时,需将服务名(servicename)指定为“MATLAB”,主题名(TopicName)指定为“Engine”,同时在运行VI之前先启动MATLAB或者MATLAB计算引擎(在内存中均为MATLAB.exe),否则无法通信。
基于DLL的LabVIEW与VC、Matlab混合编程
操作 , 不擅 长于 完成大 量数据 处理 的任 务 。而 Vs a i l u C + 方便 、高 效 地 与系统 及 底层 硬 件 直接 交换 数 +可
据 , t b提 供 了 多 种 功 能 强 大 的 工 具 箱 ,在 信 号 和 Mal a
②在 D L 目中添加输出函数 L项
D L是包含若 干个 函数的库 文件 , L 应用 程序在 使
,
ห้องสมุดไป่ตู้
lm d
l = , =
J
 ̄
w
_
、、
马 芳 。 张红 民 , 王 月 浩 , 马 金 超
( 江 大 学 计 算 机 科 学 学 院 ,荆 州 4 4 2 ) 长 3 0 3
摘 要 :针 对在 NI 司推 出 的 L b E 开 发 环 境 下 访 问底 层 硬 件 和 数 据 处 理 能 力 方 面 的 不 足 , 用 了 公 aVIW 采
维普资讯
实 践 s经 验
一
一
。~
i i {: 】il 一 — —~ —~ ~ I i : —— — ~~ ~ h; ! ——— : i 1l j : —— ~ ~ ~ 厶 匿 考… 槲 絮 / 一/
一一~一 一一 一 一 一 一~…— — ~ ・ —— :
利 用 V sa C + 供 的 向导功 能 可 以很 容 易地 i l +提 u
建 立 一 个 不 完 成 任 何 实 质 任 务 的 D L, 要 的 任 务 是 L 主 如 何 给 D L添 加 功 能 。 L
开 发 数 据 检 测 、 据 测 量 采 集 系 统 、 业 自动 控 制 系 数 工 统 和数 据 分 析 系 统 等 领 域 , 虚 拟 仪 器 系 统 的 主 要 开 是
Labview和matlab混编软件在labview环境下进行可执行化的方法
Labview和matlab混编软件在labview环境下进行可执行化的方法一、问题的提出:Labview下对matlab程序(m文件)的调用采用ActiveX技术,该技术不能脱离matlab运行环境。
为解决问题,尝试将m文件编译成dll文件,将Labview对m文件的调用变为Labview对dll文件的调用。
但由于研究过程出现的问题和时间的关系,这一问题并未得到解决。
在此作一总结,以便后续工作继续进行。
二、问题的确立:在本文档中,主要针对在Labview环境编写的软件进行可执行化的讨论,该软件包含了使用matlab节点或ActiveX机制的matlab函数。
因此,在Labview环境下对软件进行可执行化的主要包含了三个方面的内容:1.把matlab下编的m文件编译成可被Labview调用的文件形式。
例如:动态链接库(dll)、COM组件等。
本文档主要对动态链接库方式进行讨论,其它方式将在附录中简要说明。
2.在Labview下对动态链接库(dll)文件进行调用3.在Labview下,将含有dll的VI生成安装文件。
该文件可在脱离matlab和labview的目标机上安装、运行。
以上三个步骤如全部完成,则可以说明该应用程序已可以独立的运行发布了。
三、问题的解决方法及过程:下面将详细的讨论每个步骤的具体解决方法和过程,以供参考。
1.把matlab下编的m文件编译成可被Labview调用的文件形式(dll).解决本问题的方法,在不同的matlab版本中是不同的,在此将对在matlab6.5和matlabr2007a(7.4)两个版本下的方法作一说明。
在Matlab6.5版本中,可以通过两种方式将m文件编译成dll文件。
一种是利用matlab为Visual C++发布的一个插件add-in,在Visual C++的环境下,将m文件编译成dll文件。
另一种则是使用mcc命令行的方式对m文件直接进行编译,生成dll文件。
Matlab与LabVIEW混合编程方法应用研究.
第10卷第33期2010年11月1671—1815(2010)33-8267-05科学技术与工程Science Technology and EngineeringVol. 10No. 33Nov. 2010 2010Sci. Tech. Engng.Matlab 与LabVIEW 混合编程方法应用研究徐何李滔李勇(西北工业大学电子信息学院,西安710129)摘要对Matlab 和LabVIEW 混合编程技术进行了讨论。
主要研究Matlab Script 节点法、动态链接库(DLL )技术和COM 组件技术,详细介绍了各自的技术优点以及实现方法。
并在此基础上,结合Matlab 强大的矩阵运算能力和LabVIEW 丰富的面板设计工具,完成了对雷达显示界面的混合编程仿真设计。
关键词组件对象模型节点动态链接库混合编程雷达界面仿真中图法分类号TN955;文献标志码A2010年9月13日收到第一作者简介:徐何(1985—),男,羌族,四川省成都市人,硕士研究生,研究方向:雷达信号仿真。
E-mail :prophetxu@hotmail.com 计算机和仪器的密切结合是目前仪器发展的一个重要方向。
这种结合有两种方式,一是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
另一种方式是将仪器装入计算机,以通用的计算机硬件及操作系统作为依托,实现各种仪器功能,虚拟仪器主要是指这种方式。
LabVIEW 是美国NI 公司研发的功能强大而且灵活的仪器分析开发软件,是目前应用最为广泛的虚拟仪器开发软件。
其拥有强大的界面开发能力和良好的软硬件接口,但是在对各种算法的支持方面,LabVIEW 的工具箱有限,这限制了使用Lab-VIEW 对大型应用程序的快速开发。
Matlab 拥有强大的矩阵运算、图形处理能力和内容丰富且可扩展的工具箱,但其界面开发能力较差,并且在数据输入、网络通信、硬件控制等方面都比较繁琐。
针对LabVIEW 和Matlab 两种软件的优势和不足,使用混合编程的方法,可以很好的结合两者的优势,互补不足,开发出更具智能化的虚拟仪器。
基于LabVIEW和MATLAB混合编程的PID控制策略研究
维普资讯
2 8
电气 电子教学学ห้องสมุดไป่ตู้
第 2 卷 8
是面 向课 本 内容 的静 态 教 学 模 式 , 乏 面 向实 例 的 缺
为 比例 增益 , 为 积分 时 间 常数 , d 微 分 时 间常 T. 丁 为
交互 式 分析 的 动 态教 学 模 式口 。因此 , ] 为更 好 地 加 强 学生 对上述 策 略 的直 观 理 解 , 出基 于 虚拟 仪 器 提 技 术 和仿 真 技 术 的 PD 控 制 策 略 虚 拟 仿 真 系 统 。 I 该 系统 基 于 I b E , 合 MATI VIw 结 a AB强 大 的数值 计算功 能 , 控 制规 律 选 取 和参 数 整 定 两 方 面来 讨 从 论 PD 控 制 策 略 , 交 互 式 动 画 分 析 引 入 课 堂 教 I 将
3 0
电气 电子教学学报
信 息 与 电气工程 学院 ,江苏 徐 州 2 10 ) 20 8o
要 : 控 制策略应用广泛 , P 同时也是“ 过程控制” 程教学 内容 中最为不可缺少的一部分 。为有效促进学生对该策略的直观理解 , 课 使学 生
在实际控制系统中能灵活应用 , 出基于虚拟仪器技术和仿 真技术 的 P D控制策略虚拟仿真。系统包括控制规律选 取和参数整定两部分 , 提 I 采 用面向实例的动态分析式教学实现与学生的互动。系统采用 L b E 和 MA AB混合编程 , a VI W TL 实现了动态显 示和交互分析 的有机结合 。实 际运行表明 , 该系统可以有效加深学生对 PD控制策略理论 的理解 , I 激发学生的学习兴趣 。
电气 电子教学学报 J OURNAL OF EEE
Vo. 8 No I2 .5
Matlab与Fortran混合编程之DLL实现方法
Matlab与Fortran混合编程之DLL实现方法潘克家1,2,3汤井田1郑洲顺2PAN KejiaTANG JingtianZHENG Zhoushun1.中南大学地球科学与信息物理学院,长沙4100832.中南大学数学科学与计算技术学院,长沙4100833.高性能计算与随机信息处理教育部重点实验室,长沙410081Mixed language programming in Matlab and Fortran via dynamic linklibrary摘要:简要介绍Matlab和Fortran各自的优缺点,详细阐述Matlab调用Fortran生成的动态链接库实现混合编程的两种方法。
以高斯约当列主元素法求逆为例,从计算时间、精度等方面详细比较了同一算法在多种实现方式下的执行情况。
计算结果表明:基于动态链接库的混合编程方法能充分利用现有软件包,结合Fortran计算效率高、Matlab矩阵计算及图形处理功能强的优点,符合当前科学工程计算程序设计的发展方向。
动态链接库;混合编程;Matlab语言;Fortran语言;高斯-约当消去法10.3778/j.issn. 1002-8331.2011.31.0011002-8331(2011)31-0001-03ATP311.11国家高技术研究发展计划(863)(the National High-Tech Research and Development Plan of China under Grant No.2007AA06Z134);国家重点基础研究发展规划(973) (No.2011 CB606306);中南大学自由探索计划(No.2011QNZT 102);中南大学博士后科学基金。
潘克家(1981-),男,讲师,在站博士后,中南大学地质资源与地质工程博士后流动站,主要研究领域为智能计算、优化算法;汤井田(1965-),博士,教授,博士生导师;郑洲顺(1964-),博士,教授,博士生导师。
基于DLL的LabVIEW与VC_Matlab混合编程
现代计算机(总第二三三期)MODERNCOMPUTER2006.4实践与经验引言随着计算机技术和微电子技术的迅速发展,虚拟仪器应运而生。
美国NI公司开发的LabVIEW软件是一种高性能的图形化虚拟仪器编程软件,它主要用于开发数据检测、数据测量采集系统、工业自动控制系统和数据分析系统等领域,是虚拟仪器系统的主要开发工具之一。
但是其本身也存在不足,如不能完全提供用户所需要的驱动程序和调用系统程序实现底层操作,不擅长于完成大量数据处理的任务。
而VisualC++可方便、高效地与系统及底层硬件直接交换数据,Matlab提供了多种功能强大的工具箱,在信号和图像处理等领域具有无可比拟的优势。
因此,借助VisualC++和Matlab,可以充分发挥它们的优势来弥补LabVIEW的不足,无疑将增强LabVIEW对硬件I/O地址进行访问的能力和数据处理能力,将其不擅长或不易实现的任务完成,即制作动态链接库(DynamicLinkLibrary,简称DLL)是解决问题的一个重要技术。
DLL是一个可执行的模块,但不接受任何消息,所以并不可直接运行。
它只提供一群函数供Windows应用程序或其他的动态链接函数库调用[1],只有当应用程序被装入内存并开始运行时,才与相应的DLL建立链接关系;当执行到DLL中的函数时,根据链接产生重定位信息,Windows转去执行DLL中相应的函数代码。
多个程序使用相同的DLL时,内存只需要装载一次,可以高效经济地使用内存。
1LabVIEW对VisualC++和Matlab开发的DLL的调用(1)VisualC++开发DLL[2]利用VisualC++提供的向导功能可以很容易地建立一个不完成任何实质任务的DLL,主要的任务是如何给DLL添加功能。
①创建项目以在VisualC++6.0开发环境下为例,点击File→New并在随后出现的对话框中选择Win32DynamicLinkLibrary和AsimpleDLLProject。
基于RTW的LabVIEW和Simulink混合编程方法
境。它能直接从 S i m ulink 的模 型中产 生优 化的、 可移 植的 和个 性化的 C 代码。另外 , RTW 提供 自定 义目标 配置 功能 , 用 户可 根据自 己 的 需 要 定 制 代码 的 格 式 和 应 用 程 序 的类 型。 利 用 RTW 实现 L abV I EW 和 S i m u link 混合编程的原理图如图 1 所示。 图 1 中的 L abV I EW S i m ulation B lock T arg et! ( 以 下简 称 LSBT ) 即为我们的自定义目标配置 , 它是 实现 LabV I EW 和 S i m u link 混 合编程的关键。 LSBT 包含三个文件 : 支持代码 文件 ( lsbt_m a in . c) 、 系统目标文件 ( lsbt . tlc) 、 模版联编文件 ( lsbt . t m f), 它们 控制 模型代码的生成过程 , 其内 容决定了 生成代 码的格 式和应 用的 类型。 RTW 提供了这三类文件的标准范 例 , 用 户只需对其 进行
( 广西大学电气工程学院 广西 南宁 530004 )
摘 要 为了 实现 LabV IEW 和 S i m ulink 优 势互 补 , 拓 宽 它们 的 应用 范 围 , 提 出了 利 用 M atlab 实 时工 作 空 间 RTW ( R eal T i me W orkshop) 将两者混合编程的新方 法 , 同 时详 细阐 述使 用自 定义 目标 配置 功能 生成 可用 于 L abV I EW 应 用程 序的 过 程 , 总结 利 用 RTW 进行 L abV IEW 和 S i m u link 混合编程的步骤并给出验证实例 。 验证结果表明 , 该混合编 程方法可行和实用 。 关键词 M atlab /RTW L abV IEW Si m ulink 混合编程
基于DLL技术的PID仿真器设计与实现
基于DLL技术的PID仿真器设计与实现彭宇宁;刘平【摘要】LabVIEW和Matlab各有其优势领域,若将两者混合编程可实现优势互补,构建更为强大而友好的应用途径.文章介绍了利用DLL技术实现LabVIEW和Matlab通信的方法,以PID仿真器的构建为例,详细说明通过这种方法实现LabVIEW和Matlab交互式仿真的步骤及其应用,并对这种方法的技术特点进行了总结.【期刊名称】《实验科学与技术》【年(卷),期】2011(009)002【总页数】4页(P63-66)【关键词】LabVIEW和Matlab通信;动态链接率;PID仿真器【作者】彭宇宁;刘平【作者单位】广西大学电气工程学院,南宁,530004;广西大学电气工程学院,南宁,530004【正文语种】中文【中图分类】TP311美国N I公司推出的LabV IEW语言是一种非常优秀的面向对象的图形化编程语言,具有功能完整、应用灵活、易于理解、编程简单、开发效率高等优点,已成为虚拟仪器开发事实上的工业标准。
然而,它在工程计算、图形处理、先进控制、系统建模和仿真方面等远不及Matlab功能强大。
Matlab是MathWorks公司开发的“演算纸”式的程序设计语言。
它以强大的科学计算功能、大量稳定可靠的算法库,在数学计算工具方面已成为事实上的标准。
但它在循环处理、图形界面开发、数据输入、网络通信、硬件控制等方面较 LabV IEW不尽如人意。
因此实现LabV IEW 和Matlab混合编程,将两者的优劣互补,对于开发功能更为强大的虚拟仪器具有巨大的推动作用。
目前LabV IEW和Matlab混合编程的方法有两种,一种基于ActiveX控件技术,包括Matlab脚本节点和 ActiveX函数模板[1-2],另一种使用 Lab2 V IEW公司的工具包——Simulation Interface Tool2 kit。
第 1种方法可以实现对 Matlab较强的控制,但执行效率、支持的数据类型以及数据量受到限制。
LabVIEW与MATLAB混合编程
LabVIEW与MATLAB混合编程LabVIEW与MATLAB混合编程摘要:结合实例详细介绍了LabVIEW通过ActvieX自动化技术与MATLAB 进行混合编程,达到了利用MATLAB优化算法库的目的。
将LabVIEW与MATLAB有机结合,是一条开发智能虚拟仪器的有效途径。
关键词:LabVIEW语言 MATLAB ActiveX自动化 虚拟仪器LabVIEW建立在易于使用的图形数据流编程语言——G语言上,大大简化了过程控制和测试软件的开发。
MATLAB以其强大的科学计算功能、大量稳定可靠的算法库,已在为数学计算工具方面事实上的标准。
但才者各有欠缺,利用混合编程可以相互补充。
MATLAB是MathWorks公司开发的“演算纸”式的程序设计语言。
它提供了强大的矩阵运算和图形处理功能,编程效率高,几乎在所有的工程计算领域都提供了准确、高效的工具箱。
但MATLAB也有不足之处,例如界面开发能力较差,并且数据输入、网络通信、硬件控制等方面都比较繁琐。
美国NI公司推出的LabVIEW语言是一种非常优秀的面向对象的图形化编程语言。
LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是一个开放型的开发环境,使用图标代替文本代码创建应用程序,拥有大量与其它应用程序通信的VI库。
例如LabVIEW使用自动化ActiveX、DDE和SQL,可与其它Windows应用程序集成;使用DataSocket技术、Web Server、TCP/IP和UDP网络Vis,与远程应用程序通信。
在对硬件的支持方面,LabVIEW集成了与GPIB、VXI、PXI、RS-232/485、PLC和插入式数字采集设备等进行数据通信的全部功能。
在LabVIEW下开发的程序称为虚拟仪器VI(Virtual Instrument),因为其外形和操作可以模拟实际的仪器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与现代化 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 文献标识码:AUsi n g DLL Techni q ue to Reali z eM ixed Progra mm ing wit h La bVI E W andMATLABPE 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 ing0 引 言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 混合编程的两种途径。
94 计 算 机 与 现 代 化2007年第8期方法一:使用MATLAB 插件生成的共享库(shared M -DLL )。
MATL AB 编译器可以将M 文件编译成C /C ++代码,然后利用C /C ++编译器将其再编译成DLL 供LabV I E W 调用。
工作原理如图1所示。
图1 Lab V I E W 调用M 文件的原理图M a t h W o r ks 公司为V isua l Studi o 开发环境提供了一个MATL AB 插件,该插件可使在VC ++工程中插入M 文件的工作自动化。
因此在下面的工作开始之前,应先为VC 6.0安装这个插件。
为了方便理解,以求一个阵列的正弦值的简单例子来说明其具体步骤。
(1)编写求一个阵列正弦值的M 文件(算法),此处M 文件应为函数文件。
functi on y =sin w ave (x )y =si n (x );(2)保存好M 文件后,切换到VC 环境中新建包含此M 文件的shar edM -DLL 工程。
(3)向工程添加数据交换和算法调用函数。
函数文件经MATLAB 编译器后,其输入输出类型均为m x A rray 指针。
LabV I E W 支持标准C 数据类型(包括数值、数组、字符串、指针等)但不支持m x A r -r ay ,所以必须将m xA rray 转换成标准C 数据才能正确传递给Lab V I E W ,反之,标准C 数据必须转换成m x A rray 也才能作为M -DLL 中函数的参数。
这两个工作可分别通过m x G et P r ()和m xSetPr ()或者m e m cpy ()来完成。
下面给出本例的数据交换和算法调用代码,其他应用与之类同#i nclude "sin w ave .h "//这个头文件与M 文件名相同#i nclude "m _tes.t h "//这个头文件的名字与工程名相同#i nclude "m atl ab .h "//包含mx *()函数的声明/*_declspec (dll expo rt )为VC 中D LL 声明导出函数的关键字,也可用.def 文件指定导出函数。
本例中此函数作为导出函数供L abV IE W 调用,完成数据交换和算法调用等工作。
*/_dec lspec (d llexport )vo id si ne (doub l e *x ,double *y ,i n t len ){m x A rray *t m p =NU LL ,*rslt =NULL ;double *t ;int i ;m _testIn itia lize ();//此函数由MA TLAB 插件自动生成,与工程名有关,用来初始化库函数。
//给m xA rray 实部赋值t mp =m xC rea t eD oub l e M a trix (1,l en ,mxRE A L );m xSe t P r (t mp ,x );/M /文件中的函数转化成C 代码后,带了一个前缀m lf ,参数类型则变为m xA rray 指针rslt =m lfSin w ave (t m p );//获取m xA rray 实部内容t =mxG e t P r (rslt );for (i =0;i <len ;i ++)y [i ]=t [i ];//终止库函数调用m _test Te r m ina te ();}(4)编译此工程,然后在Lab V IE W 中用CLF 调用该D LL 。
图2为Lab V IE W 中调用此M -DLL 中si ne 函数的程序框图,他相当于求阵列[0:∏/10:2∏]的正弦值,其运行结果如图3所示。
图2 程序框图 图3 运行结果方法二:利用MATLAB 计算引擎。
MATL AB 计算引擎是一系列允许用户在别的程序中与MATL AB 交互的函数库和程序库。
在调用过程中,MATLAB 引擎函数库工作在后台,MATL AB 通过它与别的应用程序进行通信。
因此将MATLAB 引擎函数包装在DLL 中供LabV I E W 调用,就可以实现LabV I E W 和MATL AB 间的数据通讯。
下面给出上述例子用MATL AB 引擎实现的DLL 代码,将其编译成DLL ,在LabV I E W 中用CLF 调用并做好相关参数设置即可,其他应用与此相似:#i nc l ude <eng i ne .h >#i nc l ude <w i ndow s .h >//启动MA TLAB 引擎_dec lspec (d llexpor t )int openEng (int *addr ){Eng i ne *ep ;if ((ep =engOpen (NULL ))==NULL )re t u rn 0;else {engSe t V isi b l e (ep ,0);//隐藏M ATLAB 命令窗口*addr =(int )ep ;re t u rn 1;//打开m a tlab 引擎成功}}//关闭MA TLAB 引擎 2007年第8期彭宇宁等:利用DLL技术实现Lab V I E W和MA TLAB混合编程95_dec lspec(d llexport)int c l o seEng(int addr){if(engC lose((Eng ine*)addr))re t u rn0;e lsere t u rn1;//关闭成功}//执行MATLAB命令,在这之前和之后做必要的数据传递。
_dec lspec(dll expo rt)vo id si ne(i n t addr,double*x,doub l e *y,i n t len){m x A rray*A=NU LL,*B=NULL;double*bRea l;int i;Eng i ne*ep;ep=(Eng i ne*)addr;A=m xC rea t eD ouble M atri x(1,len,m xREA L);m e m cpy((void*)mxG e t P r(A),(void*)x,sizeof(x));engPu t V a ri able(ep,"A",A);engEva l Stri ng(ep,"Y=sin(A);");B=engG e t V a ri able(ep,"Y");bR eal=mxG e t P r(B);for(i=0;i<len;i++)y[i]=bRea l[i];}使用MATL AB计算引擎前,先调用openEng打开计算引擎,并将引擎指针保存在addr中,供后面的程序使用。