Delphi与matlab混合编程

合集下载

MATLAB与DELPHI混合编程的实现

MATLAB与DELPHI混合编程的实现

摘 要
文章讨论 MA AB和 D L HI TL E P 混合编程的实现方法 , 重点论述 了用 MA ABAuo t nS re 技术实现 TL tmai ev r o
混合 编程 的方法 , 以具体的例子展示 了 DE P 的可视 化界 面与 MATL 并 L HI AB强大 的数值计 算和 图形显示 能力 的结合方
扬长避短, 充分发挥各自 的优点。
2 具 体 实 现 方 法
MATL AB和 D L HI 合 编 程 的 实 现 有 几 E P 混 种 办法 , 别 为 : 分
算 环境 , 具有 强 大 的 计 算 绘 图 能力 , 供 大 量 的 函 提
数 库 、 具箱 , 乎涵 盖 了所 有 的工 程 计算 领 域 ,o u e mp tr& Dii lEn ie r g gt gn ei a n
Vo. 9No 9 13 .
16 7
2 1 年第 9期 01
MA L T AB与 DE P 混 合 编 程 的 实 现 L HI
崔 园
( 成都 医学 院人 文信 息管理学院计 算机教研 室 成都 608) 10 3
誉 为“ 算 纸 ” 的工 程 计 算 工 具 l 。 因为 它更 擅 演 式 _ 1 ]
长矩 阵试 验 , 称 为 “ 阵 实 验 室” 被 矩 。MATI AB语
1 )把 MAT I AB函数 转换 成动 态链 接库
MATL AB提供 一 种转 换 工 具 , 以把 它 本 身 可 的函数通 过 VC转 换 成 D 文 件 , 便 D I H、 I I 方 E P VB等 软件调 用 。
Cu a i Yu n
( p rme to mp t r De a t n fCo u e ,Ch n d e ia l g ,Ch n d 6 0 8 ) e g uM dc l Co l e e eg u 10 3

Delphi与Matlab接口在近红外光谱分析中的应用

Delphi与Matlab接口在近红外光谱分析中的应用
校 正 模 型 建 立 方 法 软 件 的 开 发 中 ,将 上 述 两 种 编 程
M ta a lb的调 用 。具 体 操 作 如 下 : 1 在计 算 机 上 安装 M t a 和 D 1h , 在 D S ) a 1b e p i并 O
命 令 窗 口用 “ a 1 b R g e v r M t a / e s r e ”命 令 注 册 M t a a lb
维普资讯
20 0 6年 8月
农 机 化 研 究
第 8期
De h 与 Ma l 口 在 近 红 外 光 谱 分 析 中 的 应 用 l i b p t 接 a
陈 斌 ,朱 锐 ,郝 。 勇
( 苏 大学 生 物 与环 境 工程 学 院 ,江 苏 镇 江 2 2 1 ) 江 103 摘 要 :通 过 使 用 A t v X协议 和 C W组 件 两 种 方 法 实 现 了 D I h c ie O e p i和 M t a a lb的 混 合 编 程 ,从 而 有 效 地 利 用 M ta a l b强 大 的 科 学 计 算 功 能 、丰 富 的工 具 箱 和 D Ih e p i简 单 高 效 的 开 发 平 台 ,并 将 其 应 用 在 近 红 外 光 谱 分 析 中 ,实 现 了小 波 消 噪 和 正 规 化 两 项 功 能 。 关 键 词 :计 算 机 应 用 ;D lh 与 M t a ep i a lb接 口 ;应 用 ;A t v X O 件 ; 近红 外 光 谱 c i e ;C W组 中 图 分 类 号 :T 3 2 P 1 文献 标 识码 :A 文章 编 号 :1 0 — 1 8 (0 60 - 0 7 — 0 0 3 8 X 2 0 )8 1 3 3
0 概 述
D i h 是 一 种 面 向对 象 的 、可视 化 的快 速 应用 ep i 开 发 (A ) 具 。 它 既 具 有 V RD工 C的 强 大 功 能 ,同 时 又

MATLAB与Office交互使用

MATLAB与Office交互使用

MATLAB与其他软件的交互使用杨文霞matlab提供了与microsoft公司的office系列软件的交互使用和便利的数据传输,使得用户能在word环境、Powerpoint中自如的使用matlab进行计算,为用户营造集文字处理、科学计算和工程设计于一体的工作环境。

本章介绍在数学建模和数学实验中最常用的两个软件Word及Excel与matlab的交互使用和数据传输。

1Word中使用Matlab在Word中使用Matlab主要通过matlab的Notebook功能实现的。

Notebook使得用户能够在word环境中使用matlab,使用户能将文字处理与科学计算放在一个工作环境中,方便用户使用。

Matlab制作的m-book文档不仅拥有ms-word的全部功能,而且具备matlab的数学结算能力。

在word中使用matlab的基本步骤为:(1)notebook的安装在command window中,键入:notebook,运行后,会出现如下界面:Welcome to the utility for setting up the MATLAB Notebookfor interfacing MATLAB to Microsoft WordChoose your version of Microsoft Word:[1] Microsoft Word 97[2] Microsoft Word 2000[3] Microsoft Word 2002 (XP)[4] Exit, making no changes选择适合的matlab版本后,Microsoft Word Version: 3Notebook setup is complete.此后,会打开一个word文档:即表示安装结束。

1.notebook的启动(1)从word中启动notebook打开一个word空白文档后,在文档的右边将会出现一个新建文档的选项:在模板选项下,选择:本机上的模板,则会出现如下对话框:选择m-book.dot模板。

基于动应力测试的疲劳强度分析软件设计及应用

基于动应力测试的疲劳强度分析软件设计及应用

基于动应力测试的疲劳强度分析软件设计及应用作者:朱文婷等来源:《无线互联科技》2014年第04期摘要:针对机车车辆线路动应力试验,基于疲劳强度评定和疲劳寿命预测理论,开发出了一套试验数据处理软件。

运用雨流计数法的循环计数算法,满足了线路动应力实验对海量数据进行计数的需求;介绍了软件的基本结构和数据处理流程。

软件已在多次线路动应力实验数据处理中得到应用,计算结果可靠。

关键词:动应力实验;疲劳强度;雨流计数法1 引言随着列车营运速度的不断提高,在营运过程中,机车车辆关键零部件的疲劳问题时有发生,个别部位或结构的疲劳问题还相当突出,严重威胁行车安全。

疲劳破坏是指材料在低于拉伸强度极限的交变应力(或应变)的反复作用下、发生裂纹萌生和扩展并导致突然断裂的失效方式[1]。

为了防止这种破坏的发生,必须对机车车辆进行定期的疲劳强度评定和疲劳寿命预测。

目前,对车辆在实际运营环境下的关键位置进行线路动应力试验是车辆疲劳强度评定和疲劳寿命预测的有效手段。

但线路动应力实验所采集的数据量巨大,如何快速有效的对所得数据进行可靠分析,才是实验需要解决的关键问题。

因此,开发出一套适合试验需要的试验数据处理软件是一项具有实际意义的工作。

2 动应力实验动应力测试是工程机械中常用的测试手段,主要用于分析构件的强度问题。

目前,国内外一般采用电阻应变测量法进行应力测试,通过粘贴应变片测得该点的应变值,然后经过一定的计算方法得出该点的应力值。

实验采用DDS32数字式动态信号采集系统对各个测点的应变信号进行全程采集。

该系统是国内广泛应用的DDS数据采集仪器,主要用于动态应变信号测量,通过高速USB2.0接口与电脑有机集成为一体,完美实现了精密μV级信号调理,高速、高精度数据采集,具有超小型化﹑数字化﹑网络化﹑软件化的特点,同时具有很高的可靠性。

将电阻应变计粘贴在被测构件上,当构件变形时,电阻应变计的电阻值将发生相应的变化,利用电阻应变仪将此电阻的变化测定出来,再换算成应变值,由数据采集系统记录下来,进行强度理论计算[2]。

MATLAB 与C C + + 、FORTRAN语言混合编程

MATLAB 与C C + + 、FORTRAN语言混合编程

MATLAB 与C/ C + + 、FORTRAN语言混合编程摘要:对MATLAB 与C/ C + + 和FORTRAN 语言进行混合编程的常用方法进行了介绍,分析了其实现方式和各自的利弊,并用实例对MEX 文件实现方式进行了较详细的论述.关键词: MATLAB ; C/ C + + ; FORTRAN ; 混合编程中图分类号: TP313 文献标识码: A 文章编号:16722948X(2004) 0620547205 1 混合编程的意义及其实现方式1. 1 混合编程的意义MATLAB 语言具有功能强大、开发效率高等诸多优点, 已在工程实际中得到广泛应用, 但是与FORTRAN、C/ C + + 等语言相比,其执行效率较低,特别是当程序中含有大量循环语句(例如迭代计算)时,MATLAB 就有些力不从心, 速度很慢, 而运用FORTRAN 等擅长数值计算语言进行编程,其运行效率高. 一方面,如果放弃MATLAB 强大功能和数量众多的应用工具箱,无疑是资源的极大浪费. 另一方面,针对工程实际,人们用FORTRAN、C/ C + + 语言已编写了大量实用程序,如果将其重新改写成M 文件移植到MATLAB 环境中,不仅要花费大量的时间和精力,而且有时还降低了其运行效率. 可否将二者优势互补呢? 混合编程就是其有效的解决途径.1. 2 混合编程的实现正是考虑到上面这些原由,MATLAB 系统提供了其应用程序接口(Application Program Interface) 来解决这些问题. API 主要包括3 部分:MEX 文件———外部程序调用接口,用来在MATLAB 环境下调用FORTRAN、C/ C + + 语言编写的程序;MAT 文件应用程序———数据输入输出接口,用于MATLAB 系统与外部环境之间互传数据; 计算引擎函数库———MATLAB 处于后台作为一个计算引擎,与其它应用程序建立客户机/ 服务器关系,在其它应用程序中调用[1 ,2 ] .1. 2. 1 MEX 文件MEX 文件是按照一定格式,用FORTRAN 或C/C + + 语言编写的源程序,在MATLAB 下借助相应的编译器,生成的动态链接函数的统称. 在Windows操作系统下,是用MATLAB 附带的批处理mex. bat来编译生成文件后缀名为. dll (Dynamic Link Li2brary) 动态链接库文件,该文件可在MATLAB 环境下,像命令函数一样直接运行和调用,使用起来极为方便. 采取MEX 文件方式,是重复利用已有FOR2TRAN、C/ C + + 程序,让MATLAB 和FORTRAN、C/ C + + 语言优势互补的最有效和常用的方式,但不足的是其开发的程序只能在MATLAB 环境下运行.本文将详细的论述基于Windows 平台上其实现过程.1. 2. 2 MAT 文件应用程序MATLAB 数据存储的默认文件名后缀为. mat ,习惯上称该格式的文件为MAT 文件, MAT 文件应用程序提供了一种方法让MATLAB 与其它软件进行数据输入输出.1. 2. 3 MATLAB 计算引擎MATLAB 引擎采用客户机/ 服务器的计算模式,通过对Activex 技术的支持,实现VC 应用程序(客户机) 与MATLAB(服务器) 的动态连接通信. 假如用户想以较短的时间开发前台为VC + + 产生的用户界面,后台由MATLAB 计算分析的应用程序, 使用MATLAB 引擎是很好的选择. 在实际应用中,MAT2 LAB 作为ActiveX 的自动化服务器,接收通过引擎传来的数据和指令信息并进行相应的处理,然后将结果经过引擎返回给发送请求的客户机. 但这种方式需要MATLAB 在后台的适时运行, 如果用户没有安装MATLAB ,应用程序就无法正常运行,而且应用程序与MATLAB 间通过字符流传递数据和命令参数,整个算法在MATLAB 中执行,从而降低了程序的执行效率,因而其实际应用不多.1. 2. 4 MCC 和MATCOM前面提到的几种方式都是以MATLAB 为主,程序的运行都离不MATLAB 环境. 除此之外,另一种方式就是将MATLAB 语言程序翻译成C/ C + + 语言代码,再用C/ C + + 语言的方式进行开发. MAT2 LAB 自己提供了C 语言翻译程序mcc , 另一种是原第3 方公司MathTools 开发的MATCOM. 后者出现较早,功能远比MATLAB 自己的翻译程序强大,所以MathTools 公司已经被MathWorks 公司收购,并已将其开发技术融于新推出的MATLAB 6. 0 (Re2 lease 12) 中. 但二者都不完善,有大量的MATLAB函数及数据类型是不能兼容变换的,所以有时会发现将简洁的MATLAB 程序翻译成C 语言程序很晦涩.翻译后的C 程序几乎不适合手动去维护,更谈不上升级了[3 ] .2 C/ C + + 语言MEX文件的实现C/ C + + 语言MEX 文件的实现包括,源程序的编辑、MEX 编译和调试. 在编译和调试前要进行编译器的配置.2. 1 C/ C+ + 语言MEX文件的编写C/ C + + 语言MEX 文件的编写格式,除了要遵循C/ C + + 语言语法外,还须要加入用于MATLAB和C/ C + + 语言通信协议———入口子程序. 我们首先看一个极简单的C 语言MEX 文件,该程序的作用是两个数求和,源程序如下:/ / 示例程序myplus. c :求两个Double 数之和# include ”mex. h”/ 3 计算功能子程序3 /void myplus (double y[ ] ,double x[ ] ,double z[ ]) {y[0 ] = x[0 ] + z[0 ] ;}/ 3 以下是入口子程序3 /void mexFunction(int nlhs ,mxArray 3 plhs[ ] ,int nrhs ,const mxArray 3 prhs[ ]){double 3 x , 3 y , 3 z ;int mrows0 ,ncols0 ;int mrows1 ,ncols1 ;/ 3 检查输入输出变量个数3 /if (nrhs ! = 2)mexErrMsgTxt (”Two input s arquired”) ;elseif ( nlhs > 1) mexErrMsgTxt ( ”Too many output argument s”) ;/ 3 输入量必须是两个非复数double 类型3 /mrows0 = mxGetM(prhs[0 ]) ;ncols0 = mxGetN(prhs[0 ]) ;if ( ! mxIsDouble (prhs [ 0 ]) | | mxIsComplex (prhs [0 ]) | | ! (mrows0 = = 1 & &ncols0 = = 1) ) mexErrMsgTxt ( ”Input s must be all noncomplex scalar double. ”) ;mrows1 = mxGetM(prhs[1 ]) ;ncols1 = mxGetN(prhs[1 ]) ;if ( ! mxIsDouble (prhs [ 1 ]) | | mxIsComplex (prhs [1 ]) | | ! (mrows1 = = 1 & &ncols1 = = 1) ) mexErrMsgTxt ( ”Input s must be all noncomplex scalar double. ”) ;if (mrows0 ! = mrows1| | ncols0 ! = ncols1) mexErrMsgTxt ( ”Input s must be same dimen2sion. ”) ;/ 3 为返回参数创建矩阵3 /plhs [ 0 ] = mxCreateDoubleMat rix ( mrows0 ,ncols0 ,mxREAL) ;x = mxGet Pr (prhs[0 ]) ;z = mxGet Pr (prhs[1 ]) ;548 三峡大学学报(自然科学版) 2004 年12 月y = mxGet Pr (plhs[0 ]) ;/ 3 调用计算功能子程序myplus () 3 /myplus (y ,x ,z) ;}上面程序为一典型的C 语言MEX 文件,程序由两部分构成:一个计算功能子程序(myplus () 函数) 和一个入口子程序(mexFunction () 函数) . 顾名思义,计算功能子程序包含所有实际所需完成的功能、算法,我们已有的或现编的C/ C + + 、FORTRAN 程序就被当做计算功能子程序使用,它由入口子程序调用. 入口子程序是MATLAB 系统和外部程序之间沟通的桥梁,主要用来完成两者之间的通信. 上面示例程序中,mexFunction () 函数有大量语句是用于检查变量的数据类型等辅助性工作,这是必要的,因为MAT2LAB 语言不像C/ C + + 等语言变量使用前须声明,对类型的检查可以避免许多错误的发生.下面简要的说明一下上面程序中用到的MAT2LAB API 函数,它们在mex. h 或mat rix. h 中声明. mexFunction () ,入口子程序函数,其格式如下:void mexFunction(int nlhs ,mxArray 3 plhs[ ] ,intnrhs ,const mxArray 3 prhs[ ]){⋯⋯/ / 一些必要的代码,用来完成MATLAB 系统与计算功能子程序之间的通信}其参数的含意为:nrhs 和nlhs ,整型变量,分别为调用MEX 文件时输入、输出参数的个数. prhs、plhs ,指针数组,其元素分别为指向输入、输出参数的指针. mexErrMsgTxt () ,用于输出错误信息,并返回到MATLAB 命令提示符下.mxGetM() 和mxGetN ( ) ,获得矩阵的行数和列数,参数为指向矩阵的指针,如程序中的mrows0 =mxGetM(prhs[0 ]) 的作用为:得到第一个输入实参的行数,并赋值给整型变量mrows0.mxIsDouble () 、mxIsComplex () ,判断矩阵是否为双精度型、复数型. 输入参数为矩阵指针,返回值为BOOL 值.mxCreateDoubleMat rix(int m ,int n ,mxComplex2ity complexFlag) ,创建一个未赋值的双精度矩阵,m ,n 为创建矩阵的行、列数,complexFlag 为标识是实数还是复数. 该函数返回所创建矩阵的指针.mxGet Pr () 获得矩阵实数部分的指针,输入参数为矩阵的指针,返回值为矩阵实数部分的双精度指针.MATLAB API 函数还包含其它许多接口函数,分为mx2函数和mex2函数,详细情况可查阅相关文献.MEX 源程序编写完成后,还要经过编译后才能生成dll 文件,供MATLAB 或其它程序调用,编译前要对MATLAB 进行编译器的配置.2. 2 编译器的配置编译器的配置是通过MATLAB 的配置文件(mexopt s. bat ) 进行的,其具体过程为: 在MATLAB 命令窗口下键入:mex2steup ,随后系统弹出一个DOS 窗口,按照提示一步步选择完成即可. 该命令可带许多参数,可针对不同的操作系统进行多种配置[2 ,3 ] . 2. 3 C/ C+ + 语言MEX文件的编译编译方法很简单,直接在MATLAB 命令提示符下键入:mex filename ,其中filename 为需编译的源程序名. 如果提示有错误信息,需查错,修改源程序、调试. 直到没有错误信息提示. 编译通过生成的可执行的dll 文件,可在MATLAB 命令提示符下或其它程序中调用.3 FORTRAN语言MEX文件的实现FORTRAN 语言MEX 文件的实现步骤和C/ C+ + 语言MEX 文件大体相同.3. 1 FORTRAN 语言MEX 文件的编写MATLAB 提供了C/ C + + 和FORTRAN 两种语言的接口,基于FORTRAN 语言和前面讲到的基于C/ C + + 语言的MEX 文件在实现方式上相差不大. 我们先还是看一下前面程序用FORTRAN 语言MEX 文件来实现的源程序.! 示例程序myplus. f :求两个数之和! 计算功能子程序subroutine myplus (y ,x ,z)! 变量声明real 3 8 x ,y ,zy = x + zreturnend! 以下是入口子程序subroutine mexFunction(nlhs ,plhs ,nrhs ,prhs) ! 参数声明integer nlhs ,nrhs ,plhs ( 3 ) ,prhs ( 3 )! 调用API 库函数的声明integer mxGet Pr ,mxCreateFullinteger mxGetM ,mxGetN ,mxIsNumeric! 程序内部使用变量的声明第26 卷第6 期陈建平等MATLAB 与C/ C + + 、FORTRAN 语言混合编程549 integer xpr ,ypr ,zprinteger mrows ,ncols ,sizereal 3 8 x ,y ,z! 检查输入输出变量个数if (nrhs. ne. 2) thencall mexErrMsgTxt (’Two input s arquired’)elseif (nlhs. gt . 1) thencall mexErrMsgTxt ( ’Too many output argu2ment s’)endif! 输入量必须是两个数mrows = mxGetM(prhs (1) )ncols = mxGetN(prhs (1) )size = mrows 3 ncolsif (mxIsNumeric (prhs (1) ) . eq. 0) thencall mexErrMsgTxt (’Input s must be a number’)endifmrows = mxGetM(prhs (2) )ncols = mxGetN(prhs (2) )size = mrows 3 ncolsif (mxIsNumeric (prhs (2) ) . eq. 0) thencall mexErrMsgTxt (’Input s must be a number’)endif! 为输出参数创建矩阵plhs (1) = mxCreateFull (mrows ,ncols ,0)xpr = mxGet Pr (prhs (1) )zpr = mxGet Pr (prhs (2) )ypr = mxGet Pr (plhs (1) )! 将数据指针转换成双精度型call mxCopyPt r ToReal8 (xpr ,x ,size)call mxCopyPt r ToReal8 (zpr ,z ,size)! 调用计算功能子程序mypluscall myplus (y ,x ,z)! 将计算结果传给输出数据指针call mxCopyReal8ToPt r (y ,ypr ,size)returnend该程序的结构和内容与前面myplus. c 大致相同,也是由两部分:一个计算功能子例行程序和一个入口子例行程序构成,其程序中参数和变量大多相同,这里就不一一再介绍了. 但值得一提的是, FOR2TRAN 和C/ C + + 语言语法规则相差较大,在C/ C ++ 语言中对字符大小写是敏感的,而FORTRAN 语言中大小写是一样的;C/ C + + 语言中数组是按行存储,数组下标是从0 开始计数的,而FORTRAN 语言中数组是按列存储,数组下标从1 开始. C/ C + + 语言几乎支持所有的数据类型,支持头文件,操作很灵活. 而FORTRAN 语言,不支持指针,参数传输较麻烦[1 ] .3. 2 FORTRAN语言MEX文件的编译和C/ C + + 语言MEX 文件一样,编译前需进行编译器的配置,方法同前,只是选的编译器不同(例如Compaq Visual Fort ran version 6. 6) . 编译的过程也一样,MATLAB6 的编译命令(不再区分C/ C + + 文件用cmex. bat ,FORTRAN 用fmex. bat) 统一使用mex.bat 批处理命令,其后的文件名须带扩展名.4 Visual Studio IDE 下MEX文件的建立和调试4. 1 Visual Studio 的配置前面使用的mex 文件的使用方式,类似在DOS下程序开发方式,程序编辑、编译、调试和执行分开,每次只能创建一个文件,需要来回切换MATLAB 命令窗口和编辑窗口,操作较麻烦. VC 是在Windows环境下的优秀开发平台,将MATLAB 和VC 强强联手,无疑是非常好的混合编程方式. 下面就简要介绍一下如何在VC 的IDE( Integrated Development Envi2 ronment) 中编译MEX 程序. 为了表述的方便,我们以MATLAB6. 5 (安装在C: \ matlab6p5) 和Visual C ++ 6. 0 (安装在D : \ Program Files \ Microsoft Visual Studio) 为例,可以分为以下5 步[4 ,5 ] :①用VC 创建一个工程(假定名称为myproject) ,类型选择Win32 Dynamic - link Library ,并将自己的MEX源程序和mexversion. rc (在C: \ MATLAB6p5\ extern \ include 下) 加入到工程.②创建一个与工程同名的定义文件(myproject .def) ,内容如下:L IBRARY myproject . dllEXPORTS mexFunction(如果是FORTRAN 该行改为EXPORTS -MEXFUNCTION @16 )并加入定义文件myproject . def 到工程③定位库文件( . lib) 位置. 具体操作为:选择VC下拉菜单Tools/ Options ⋯,在弹出的对话框Show di2rectories for 下拉框中选择Library files ,在下部的Di2 rectories : 中添加C: \ MATLAB6p5 \ extern \ lib \win32 \ microsoft \ msvc60 目录. 然后选择VC 下拉菜单Project/ Settings ⋯, 在弹出的对话框中选择550 三峡大学学报(自然科学版) 2004 年12 月Link 选项卡,在Category 栏中选择general 选项,在出现的Object/ library modules : 框中填入libmx. lib , libmex. lib , and libmat . lib.④加入MATLAB include 目录. 具体操作为:选择VC 下拉菜单Tools/ Options ⋯,在弹出的对话框Show directories for 下拉框中选择Include files ,在下部的Directories : 中添加C: \ MATLAB6p5 \ extern\ include 目录. 然后选择VC 下拉菜单Project/ Set2tings ⋯, 在弹出的对话框中选择C/ C + + 选项卡,在Category 栏中选择Preprocessor 选项,在出现的Pre2 processor definitions : 框中填入MATLAB-MEXFILE.⑤最后就是调试运行配置. 具体操作为:选择VC下拉菜单Project/ Settings ⋯,在弹出的对话框选择Debug 选项卡,在Category 栏中选择General 选项,在出现的Executable for debug session :框中填入C: \ MATLAB6p5 \ bin \ win32 \ matlab. exe.4. 2 在Visual Studio 中使用MATLAB add - inMATLAB6. X为Visual Studio IDE 提供了add -in ,该add - in 使MATLAB 的M - files 非常容易的就可加入到VC 环境中,使VC 和MATLAB 很好的融合. 不过要使用该插件需要简单的配置. 具体操作如下:使用前面提到的mex - steup 命令进行编译器的配置, 选择VC 作为编译器后, 该命令自动装载MATLAB add - in. 然后选择VC 下拉菜单Tools/Customize ⋯, 在弹出的对话框中勾选MATLAB add- in 复选框. 随后VC 就出现了如图1 所示的工具条,其中第一个按钮的功能就是用来将M - files 添加到Visual Studio IDE 中的.图1 图标示例5 结语本文对MATLAB 与C/ C + + 和FORTRAN 语言进行混合编程的常用4 种方法进行了论述. 4 种方法各有其优势,又各有不足. 其中MEX 文件的方式,特别是Visual Studio IDE 下混合编程,将MATLAB和Visual Studio 开发系统相接合,以其功能强大、操作便利和利于升级维护,具有广泛的使用价值.参考文献:[1 ] 刘志俭. MATLAB 应用程序接口用户指南[M] . 北京:科学技术出版社,2000.[2 ] 飞思科技产品研发中心. MATLAB6. 5 应用程序接口编程[M] . 北京:电子工业出版社,2003.[3 ] 薛定宇. 科学运算语言MATLAB5. 3 程序设计与应用[M] . 北京:清华大学出版社,2000.[4 ] 王振义. MATLAB 和Visual C + + 的混合编程[J ] . 雁北师范学院学报,2002 ,18 (2) :26~29.[5 ] 马海阳,王艳华,孙道恒. MATLAB 的VC 编程接口浅析[J ] . 信息技术,2003 ,27 (3) :55~57.[责任编辑张莉]第26 卷第6 期陈建平等MATLAB 与C/ C + + 、FORTRAN 语言混合编程551__。

应用Delphi+Matlab/VC开发足疗软件

应用Delphi+Matlab/VC开发足疗软件

足疗起效的关键在于准确按摩相关反射 区。 足疗主要有器 械按摩 和人工按摩两种按摩形式 。 市场上 的按摩器械普遍存在 反射 区定位不准确的问题 ; 工按摩反射区定位准确与否取决 人 于按摩师专业水平 的高低 。按摩师水平参 差不齐 , 如果反射 区
定位不准确 , 足疗就起不到应有的疗效 。虽然专业足疗师能解 决上述 问题 ,但是患者频繁到足疗店治疗不仅经济负担沉重 , 而且耗费大量时间和精力 , 治疗很难坚持下去 。
0 引言
刚性配准 , 得到反射 区的位置。图像处理按照足底 、 足面、 足两 侧 的顺序进行 。
足疗是 中国传 统医学 的重要组成部分 , 历史悠久 。足疗有 两种用途 : 一是保健 , 称为“ 足健法 ”二是治病 , , 称为“ 足反射 区 疗法” 临床实践证明 , 。 对于一些使 用中西药物进行常规治疗一
De e o m e to l ‘ v lp n f Vo a。 ma s g o t r t u t 。 l n u g o r m m i g s a e S f wa e wi h M li ‘ a g a e Pr g a n
W AN G e g n Xu — a g,Y U i Le ,CH EN n— y A u
时难 以收效的疑难病症 , 足疗效果 明显 【 】 1。 0
下 面介 绍足底 图像处理过 程 ,其余部 分图像处 理方法类
似。
1 1提取感兴趣 区 .
() 1大津阈值法彩色图像 二值化 。 大津 阈值 法可 以 自动寻找 阈值 ,将 图像 中 目标 和背景分 开 。大津法 由大津于 17 9 9年提出 , 设一幅 图像 的灰度值为 1 ~ m级, 灰度值 i 的像 素数 为 n, ;此时我们得 到总像素数

基于COM STA线程模型的Delphi与Matlab混合编程研究(全文)

基于COM STA线程模型的Delphi与Matlab混合编程研究(全文)

基于COM ST线程模型的Delphi与Mtlb混合编程研究XX:1009-3044(20XX)12-2912-04Delphi是一种基于Object Pscl语言的快速可视化开发工具,对于程序开发人员来讲,使用Delphi开发应用软件,将会极大地提高编程效率,但若直接利用Delphi开发一些复杂算法特别是科学计算,其效率并不会很高。

Mtlb作为一种高性能数值计算软件,提供了强大的数值分析、矩阵运算和图形显示等功能,被广泛应用于工程计算、数值分析、系统仿真等领域,但由于Mtlb是一种解释型编程语言,执行效率低,程序界面开发能力差。

如果将Delphi与Mtlb相结合,将会克服彼此缺点,高效地完成编程任务。

Delphi和Mtlb混合编程的常用方法有多种[1-3],其中基于COM组件技术的编程方法得到了广泛关注[4-5]。

这种方法是利用Mtlb提供的COM Builder工具将编写好的M文件编译生成DLL库,之后供Delphi调用,该方法可以脱离Mtlb环境,因而极大的方便了应用程序的公布。

但其也有缺点,其中之一是在应用程序中调用DLL库时容易出现用户界面冻结,使用户以为程序失去响应。

为此,该文对此进行研究,提出一种基于COM ST线程模型的改进方法。

1 相关技术1.1 COM组件COM即组件对象模型(Componet Object Model,COM),是一种以组件为公布单元的对象模型,该模型使各应用程序组件可以用一种统一的方式进行通讯。

在COM标准中,COM对象被完美地封装起来,客户无法访问对象的实现细节,提供给用户的唯一访问途径是通过COM 接口来实现。

COM接口有两方面的含义:其一,它是一组可供调用的函数,客户可以让该对象做某些事情;其二,接口是组件及其客户程序之间的协议。

使用COM编程实现了与编程语言无关的软件重用。

1.2 基于COM组件实现Delphi与Mtlb混合编程传统的基于COM组件实现的Delphi与Mtlb混合编程[4-5],其第一步是编写M文件,之后在Mtlb环境下输入命令comtool,启动Mtlb COM Builder,设置好相关参数并添加好M文件后,就可以编译生成相应的COM组件,并将该COM组件注册到Windows的注册表中,最后在Delphi中直接调用该COM组件,实现混合编程。

Delphi和MATLAB的混合编程在水轮机特性曲线处理中的应用

Delphi和MATLAB的混合编程在水轮机特性曲线处理中的应用

摘要 : 利用功能强大的软件开发工具 D l i 0 e h 07和数据库 Acs 03 p2 c s 0 开发出界面友好、 e2 操作简单 、 口丰富、 接 通用性较
强 的特性 曲线 图采集软件 。在 D lh 中利用 A t e epi cvX技术 实现 Ma a i t b的 自动 化 , 而在 M T A l 从 A L B中实现对 水轮机 特性 曲线数据进行拟合 , 并将 结果反馈到 D lh 界面 中。该软件可用 于水轮 机设 计 、 e i p 选型 、 计算机仿真和工况分析等 。
it s o y rt r i e a d ma e a fe b c o t e De p ii t ra e si fh d ou b n n k e d a k t h l h n e f c .Th ss f r a s d frt e t r n sg c i o t e c n be u e o h u bie de i n,s — wa e
v ra . M ATLAB a tm ain i e lz d i l h h o g tv X .S tc n smu ae t e c r e d a r m ft h a tr es 1 u o to sr aie n De p it r u h Ac ie O i a i l t h u v i ga o hec r ce —
D lh 和 MA L B的 混 合 编 程 e i p TA 在 水 轮 机 特 性 曲线 处 理 中 的 应 用
向培 林 彭 小 东 , 海 江 汪 洋 , 张 ,
( . 国水 利 水 电建 设 集 团 四川 电 力 开 发 有 限 公 司 , 1中 四川 成 都 6 0 12 三 峡 大 学 电气 与 新 能 源 学 院 , 北 宜 昌 10 ;. 4 湖 4 30 ) 4 0 2

MATLAB和DELPHI混合编程在风险评价数学模型中的应用

MATLAB和DELPHI混合编程在风险评价数学模型中的应用

… 、, ( — y ( ) 。 n ・ ’

多 网 , 为 入 、含 和 出 , 与 之 多 层 络分 输 层 隐 层 输 层层 层 间 采
s uid B er lntok i a l t vlae poetivsmn ikeatyadsedy bttem dli tde . Pnua ewr s be oeaut rjc netetrs xcl n pe l , u h oe s
c m l c t d M T A e r l e w r o l o s s d t i p o e t e e f c e c n u l t ,a d a j i t r g a o p i a e . A L B n u a n t o k t o b x i u e o m r v h f i i n y a d q a i y n o n p o r m
on EL t i d D PtI s esi n by si g he LE aut ma on. g ed u n t O o ti

Ke wo d : a h m t c o e : B ; R s v l a i n;M T A v r s M t e a i M d l P ik E a u t o A L B;D L H1 EP
D ’, ,=( ∑
一,) Y ’ ∑W ・ 一』 ) 0’ = : ( D ’0 ’ , :
il2 …,;r l2… ,;j l2 …,。 = ,, m = ,, u = ,, n 其 中:u 分别为 隐含层和输 出层节点个数 ;f ・为 、m () 神经元输入 与输出之 问的转换 函数 。 输入层 和隐含层之间的
体风险水平 做出 合理评价的 过程。 往风险 以 评价的主要方 法

Matlab与Delphi的接口实现

Matlab与Delphi的接口实现
究 , 现 了 Maa 实 tb与 D l i l e h 的接 口 . p
1 利 用 数 据 中转 实 现 Ma a tb与 D lh 的接 E l e i p l
1 1 接 口实 现 的 原 理 .
M t b 人 数据 的方式 较多 , 中利 用 M 文件输 入数 据 , 仅 语法 简单 功 能 强大 , aa 输 l 其 不 而且 运行 时 只需 输
维普资讯
第 2 第 5期 5卷
司文建 , : a a 等 M 源自b与 D l i l e h 的接 口实现 p
9 7
入 M tb集 成环境 , al a 由于 M tb环 境 变 量 由 m t bc m文 件定 义 , aa l a ar. l 因此 可 以通 过 对 m tbc m文 件 的 修 a ar. l
入 M文件 名 , a a M t b就会 自动按顺 序 执行 M 文件 中的语 句 , 而 把数 据 按元 素 列 表方 式 引人 M tb工 作 l 从 aa l
区间 . a a M t b数据输 出 的方式也 有很 多种 , 了便 于与 D l i l 为 e h 的接 口, 以利 用 M t b的 Sv 指 令输 出数 p 可 aa l ae
据. 例如 M t b 句 Sv a ot dt —ac aa 语 l aedt u. a a b a si i—du l, 将 变 量 a和 b以 l ob 可 e 6位 A CI 形 式 存 人 S I码 dt u.a 文 件 . 据上述 M t b数据 输 出的方式 , 可 以利 用 M文 件 为 中转 , 现 M t b和 D l i a ot t a d 根 aa l 便 实 aa l e h 的数 p
接 口 问题 , 点 讨 论 了 Malb与 D lh 接 口 实现 的 方 法 . 重 t a ep i

Matlab与C#混合编程

Matlab与C#混合编程

Matlab与C#混合编程的实现关于matlab与c#之间一些数据类型的转换的方法,我也曾经写过。

总结一下,最主要的是要完成下面几个步骤:1、同时安装.netframwork与MCR(matlab compile runtime)。

这个在装完 与matlab以后,前面2个组件也就安装好了。

2、利用matlab自带的.nettool工具将.m文件转换成.net组件--->.dll文件为接口,它实际上不含任何实现,都是调用另一个.ctf文件来完成具体的功能。

3、在c#中,必须引入mwarray.dll才能拥有在.net中进行矩阵运算所需要的一切。

虽然matlab help中只是说推荐,但一般的应用中,只是进行一部分函数的调用,而不是去取得整个运行结果。

这个.dll是必须引入的。

有时mclmcrrt74.dll这个文件也需要引入。

根据具体的要求,需要引入的文件也有所差别。

4、生成一个实例,并对.net组件所输出的结果进行数据类型的转换,以符合.net 编程环境中对数据类型的要求,这个在以前我已经讲过,这里就不再多说了。

关键是掌握如何把一个矩阵(在matlab中,一个m*n的矩阵对应.net中的一个1*(m*n)的数组)转换成数据类型一致的数组。

目前所有的matlab数据类型(无论什么类型,都可以把它看成一个矩阵,这样就可以利用数组的思想来思考)都可以进行转化,具体的可能需要经过实验才能符合各自的要求。

虽然matab对.net的支持不如它对c++支持的功能强大,但也已经满足了我们实际应用的需求。

如果我们可以把大部分的运算都放在matlab里面完成,数据转换的数量又少,那么整个系统的运行速度与效率还是挺高的。

c#与matlab混合编程图解using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace ConsoleApplication1{class Program{static void Main(string[] args){Program p = new Program();p.MatlabTest();Console.WriteLine("按任意键退出...");Console.ReadKey();}/// <summary>/// 测试C# matlab调用/// </summary>private void MatlabTest(){Console.WriteLine("正在载入matlab for .NET库......"); DotNetTest.DotNetTestclass dt = newDotNetTest.DotNetTestclass();Console.WriteLine("完成......");Console.WriteLine("-----------------------------------------------");// 多项式int demention = 3;double[] dd = new double[demention];dd[0] = 1;dd[1] = 4;dd[2] = 6;//.Arrays.MWArray d =// .Arrays.MWNumericArray.MakeSpar se(// 1, demention,.Arrays.MWArrayComplexity.Real, demention);.Arrays.MWNumericArray d = (.Arrays.MWNumericArray)dd;Console.WriteLine("开始计算多项式:[{0}] ......",d.ToString());// 存储计算结果.Arrays.MWArray h;// 调用matlab函数计算h = dt.myroots(d);// 取得实部Array real =((.Arrays.MWNumericArray)h).ToArray(MathWorks.MAT .Arrays.MWArrayComponent.Real);string realpart = "实部列表:";foreach (double i in real){realpart += i + "\t";}// 取得虚部Array imaginary =((.Arrays.MWNumericArray)h).ToArray(MathWorks.MAT .Arrays.MWArrayComponent.Imaginary);string imaginarypart = "虚部列表:";foreach (double i in imaginary){imaginarypart += i + "\t";}Console.WriteLine(realpart);Console.WriteLine(imaginarypart);// 打印结果Console.WriteLine("计算结果:");Console.WriteLine(h.ToString());}}}C#与Matlab混合编程的几种方式1. 通过从Matlab的*.m文件中生成C语言版本的DLL具体过程:1) 在Matlab中写好一个m文件(比如一个简单的加法函数myplus.m);2) 使用Matlab的mbuild -setup选择编译器,我机器上的编译器有两个LCC 和VC2008(注意如果使用做应用的话,建议编译器选VC2008,否则C#中会告诉你DLL找不到Entry Point)3) 在命令行中使用mcc -B csharedlib:mypluslib myplus.m (如果是多个M文件,接着往后写),等待几十秒之后会生成若干文件(*.c, *.h, *.dll等), 其中.h文件中有导出的函数原型。

Delphi与Matlab混合编程方法研究

Delphi与Matlab混合编程方法研究
现 。
机 器 上 注 册 使 用 时 会 报 错 ; 外 , 果 要 求 每 个 使 用 该 软 件 的 用 另 如 户 的计 算 机 上 都 安 装 Ma a tb是 不 现实 的 。 文给 出 了一 种 独 立 于 l 本 Ma a 境 的 D lh 和 Maa 合 编 程 的新 方 法 。 h b环 e i p tb混 l 首 先 .O 组 件 的 开 发 者 利 用 Ma a CM t b的 C ule 按 照 l OM B i r d 21 . 所述制作 需的 C M组件 , M t b .\ o 0\o p1r e 1 \ O 在 al 7 t 1 x m i \ po a Oob c eD y wn 2里 有 个 MC Is l r x 件 ,将 组 件 安 装 程 序 jnt 1x i3 R nt l . e文 aee s 1ee a. 和 MC Is l r x R ntl . e打 包 。若 该 组 件 使 用 者 的计 算 机 未 安 装 M t aee a.
文献标识码 : A
文章编号 :0 9 3 4 (0 70 — 0 7 — 2 1 0 — 04 2 0 )9 2 7 9 0
Std fDep i n t b Mie — r g a u y o lh d Mal x d— o r mmig a a p n
ZH O U Yua n,ZH AN G n Yi g—c p, ha YE io—ln X a ig
Ma a 境 独 立 运 行 的 新 方 法 : 后 以企 业 经济 效 益 评 估 系统 的 实现 证 明 了本 文 的方 法 实 用可 行 。 t b环 l 最
关键 词 :MCRI s l r Dep iMal 混 合 编 程 nt l ; lh ; t b; ae a

一种可脱离Matlab环境的Dephi与Matlab混合编程方法

一种可脱离Matlab环境的Dephi与Matlab混合编程方法

一种可脱离Matlab环境的Dephi与Matlab混合编程方法【摘要】:把MATLAB强大的数学计算和绘图功能与Dephi灵活高效的程序设计能力结合起来具有重大的意义。

能极大地提高程序员的效率。

文章通过一个例程的实现详叙了一种可脱离Matlab环境的Dephi与Matlab混合编程方法。

【关键词】:混合编程; MATLAB; Dephi; 动态链接库一、前言MATLAB是MATrix LABoratory(”矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的优秀数学应用软件。

它在数值计算、自动控制、信号处理、小波分析、图像处理等领域有着广泛的用途。

它具有矩阵和数组运算方便、编程效率极高、易学易用、可扩充性强和移植性好等优点。

但同时它也有运行效率低、访问硬件能力相对较差等缺点。

Dephi是Borland(现在已和Inprise 合并)公司开发的可视化软件开发工具。

Delphi具有基于窗体和面向对象的方法、高速的编译器、强大的数据库支持、与Windows编程紧密结合、强大而成熟的组件技术等特点。

作为一种高级语言,Delphi的编译器运行速度非常快,这是VC和VB无法比拟的,但它在进行复杂的工程数学计算和绘图时不仅工作量巨大而且效率低下。

于是怎样把Dephi灵活高效的程序设计能力和MATLAB强大的数学运算和绘图能力有机的结合起来就有着重大的意义。

利用Delphi作为前端的应用程序开发,将复杂的工程数学计算和绘图留给MATLAB来完成。

这样能让程序员专心于应用程序的开发,可以极大地提高程序员的工作效率。

二、可脱离MATLAB环境的Dephi与Matlab混合编程方法结合国内外的相关资料,Dephi与Matlab混合编程方法主要有三种:(1)通过MATLAB自动化服务实现混合编程。

(2)利用MATLAB引擎实现混合编程。

C#与MATLAB混合编程

C#与MATLAB混合编程

C#与MATLAB混合编程C#和MatLab的混合编程,充分利⽤了winform的直观显⽰和matlab的强⼤计算能⼒。

在此以⼀个⼩例⼦的形式给⼤家讲述⼀下⼆者混合编程的实现。

⼀、软件的配置说明 C#版本:VS2010 matlab版本:matlab2013a ⼆、把 matlab函数编译成dll⽂件  2.1⾸先写⼀个函数的.m⽂件(如下函数Matrix实现两个矩阵的相加和相减)%--------------------------------------------------------function [addRlt,minusRlt]=MatrixOpera(a,b)% 矩阵相加,相减[m1,n1]=size(a);[m2,n2]=size(b);if m1~=m2 || n1~=n2 display('矩阵⼤⼩不相同') error('参数错误');endaddRlt=a+b;minusRlt=a-b;end%----------  2.2 创建制作的dll⽂件的⼯程 在MatLab的命令窗⼝中,输⼊deploytool打开创建dll⽂件的⼯程创建窗⼝,如下图所⽰ 在图中,主要分为三部分,Name:你想要命的⼯程名,j是⼯程的后缀;Location:创建⼯程的储存位置;Type:针对c#⽽⾔,我们需要选择.NET Assembly这⼀项 点击Ok选项,⼯程已经创建完毕 2.3 向所建⼯程中添加对应的元素并编译 上述过程中,新建了⼀个叫matPrj的⼯程(它相当于c#中的命名空间namespace);然后给它增加class(它就是c#中的类),点[add class]添加myMathClass;之后再给它添加⽅法(它就是函数了),点[add files],本实例中选中之前编写的MatrixOpera函数。

完了之后就可以编译了,编译需要⼀两分钟的时间,如下图所⽰ 三、C#中添加matlab的dll引⽤ 3.1打开vs2010,新建⼀个窗体应⽤程序 3.2完成dll⽂件的拷贝 将matlab⼯程(matPrj)src⽂件夹下的matPrj.dll和D:\Program Files\MATLAB\R2013a\toolbox\dotnetbuilder\bin\win64\v2.0(前边为matlab的安装路径)⽂件夹下的MWArray.dll拷贝到VS⼯程(CallMatlabDllApp)下的\bin\Debug⽂件夹下 3.3在VS⾥添加dll⽂件的引⽤,然后在代码前引⽤相应的命名空间 如果matlab函数复杂,还需要⽤到其他的空间,则视情况⽽定,⾃⼰凭经验添加。

BP网络监测模型的Matlab&Delphi混合编程

BP网络监测模型的Matlab&Delphi混合编程

i r e s bih t e mo i r g mo e fd e omai n T r u h t e a pi ai n o cu l d l w a e n o d r o e t l h n t i d l a S d fr t . h g h p l to f a t a t a s on o m o o c a mo e , e c n s e ta h s s s m e i s t e mo e x e in y a d r pd y a d t e p e iin o h i lt n a d fr c s a e h t t i y t d sg h d le p d e t n a i l n h r c s ft e smu ai e n l o o n oe a t c n me t
维普资讯
水 力 发 电
第 3 卷第 1 4 期
20 0 8年 1 月
文章 编 号 :5 9 9 4 2 0 ) 1 0 8 — 4 0 5 — 3 2(0 8 O — 0 8 0
B P网络 监 测 模 型 的 Malb D lh t & ep i a , I纠 混 △ 编 程 J = 闻任 } 1 = 匕
年 来 , 以 其 友 好 的 集 成 开 发 环境 、 它 良好 的 数 据 库 应 用 支 持
目前 , 内外 大 坝 安 全 监 测 主要 采 用 统 计 模 型 、 定 性 国 确
模 型 、 合 模 型 以及 用 模 糊 数 学 和 灰 色 系 统 理论 建 立 的预 测 混
以 及 高效 的程 序 编 译运 行 方 式 , 受 编 程 者 的 青 睐 。但是 , 深 由
p a t a e ie n s r c c lrqu r me t. i

DELPHI与MATLAB混合编程的设计与实现

DELPHI与MATLAB混合编程的设计与实现
做一个准备工作,打开一个 dos 窗口,进入 $Matlab$/bin/win32 ($Matlab$为 Matlab 的安装目录)输入 regsvr32 mwcomutil.dll,即对 mwcomutil.dll 进行注册(Matlab 的 任何 COM 组件都要用到这个 DLL) 。 4. COM 接口方案举例 仍以 drawexample.m 为例,生成 COM 组件。 (1)创建 COM 组件 在 Matlab 命令行中输入 comtool,打开 Matlab Builder。在“File”菜单中选择“New Project”,在“Component name”里填上“drawcom”,点击“OK”按钮。 点击“Add File”按钮,选择 drawexample.m 文件加入工程。 点击“Build”菜单的“COM Object”。 默认情况下在 Matlab 的工作目录下生成一个 drawcom 的文件夹,编译成功后,就会在 drawcom\distrib\文 件夹下生成有 comtest_1_0.dll 文件,它就是生成的 COM 组件,编译时 Matlab 已经对此 DLL 进行了注册。 (2)Delphi 调用 COM 组件 首先,启动 Delphi,在“File”菜单中选择“New Application”,生成一个应用程序。在界面上放置一个按钮。 其 次 , 在 “Project” 菜 单 中 选 择 “Import Type Library…” 。 在 “Import Type Library” 界 面 选 择 刚 生 成 comtest_1_0.dll 文件,点击“Install…”按钮。 在组件面板中找到 ActiveX 选项卡,把组件 drawcomclass 放到界面上。命名为 drawcom1,在界面上双击按 钮,编辑该按钮的事件,修改其代码如下: procedure TForm1.btn1Click(Sender: TObject); var c , n : OleVariant; begin n :=4.0;//注意不能写成 4 drawcom1.drawexample(1,c,n); end; 实现的效果和图一相同。 四、结束语 本文讨论了 Delphi 与 Matlab 的混合编程, 主要集中讨论在 Delphi 中调用 Matlab 的自动化服务器和 COM 两种方法,并给出了 2 个例子。可以看出,通过混合编程,可以把两者的优势充分地结合起来,既有效地利 用了 Delphi 强大的可视化编程的功能, 同时也充分利用了 Matlab 强大的运算能力,使得编程者不必重新编 写复杂的算法,从而极大程度地提高了编程的效率。

用Delphi和Matlab联合编程实现瞬变电磁法数据处理及解释系统

用Delphi和Matlab联合编程实现瞬变电磁法数据处理及解释系统

用Delphi和Matlab联合编程实现瞬变电磁法数据处理及解释系统发表时间:2015-12-03T15:11:53.507Z 来源:《基层建设》2015年17期供稿作者:苗圃胡坚[导读] 1新疆维吾尔族自治区煤炭科学研究所 2成都新元地球物理地质勘查咨询服务有限公司采用Delphi和MatLab联合开发的模式,编制瞬变电磁法数据处理及解释系统,形成全程可视化的资料解释处理软件。

1新疆维吾尔族自治区煤炭科学研究所,新疆乌鲁木齐 830091;2成都新元地球物理地质勘查咨询服务有限公司摘要:采用Delphi和MatLab联合开发的模式,编制瞬变电磁法数据处理及解释系统,形成全程可视化的资料解释处理软件。

关键词:瞬变电磁;Delphi;MatLab瞬变电磁法数据处理及解释系统,是在瞬变电磁反演行业实际工作应用中需要的非常重要的一套系统,通过将瞬变电磁测量仪器中的原始数据导出,进行数据转化成有序数据,对无规则繁琐的数据进行处理,最后进行图像化数据展示,用于进行地质结构的反演解释1.问题及需求瞬变电磁法数据处理及解释,涉及到的数据体非常大,而且需要设置的专业性参数也非常多,其中需要图形化数据模型来进行数据逻辑性判断。

因此首先我们考虑整套系统所涉及到的问题1)大量的数据需要管理。

2)数据管道需要将底层专用的数据通过一些函数及接口代码进行抓取出来。

3)进行数据处理的时候需要图形化人机交互处理,并即使保存,保存不同版本可以回退。

4)系统操作、设置等各种配置,选项参数都很多,需要更友好的界面进行操作。

5)数据模型的数据测算,建立三维模型查看等操作需要有数据支撑和快速查看,各个角度查看。

6)需要更高效率的软件及数据处理能力。

综合上述问题,我们思考可以用Delphi和Matlab 结合的方式来完成。

Delphi 是当前主流的Windows平台下主流的开发的工具,它能方便的形成应用软件中所需要的各种用户界面和工具,并能与系统底层交换数据。

利用COM技术实现Delphi动态调用MATLAB

利用COM技术实现Delphi动态调用MATLAB

利用COM技术实现Delphi动态调用MATLAB
王志军;宋文婷
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2008(000)004
【摘要】介绍利用COM技术实现Delphi动态调用MATLAB的方法,以曲线拟合为例.详细分析了数据通信的实现方法及COM组件中方法、事件、属性与M文件的对应关系,为快速掌握Delphi与MATLAB混合编程、开发高效的程序提供参考.【总页数】4页(P10-13)
【作者】王志军;宋文婷
【作者单位】无
【正文语种】中文
【中图分类】TP3
【相关文献】
1.利用Delphi与Matlab进行科学计算的实现 [J], 陈新
2.Delphi动态调用Matlab COM组件实现二者混合编程 [J], 吴小丽;丁维明;程力
3.Delphi与COM技术对MAPGIS地理矢量图操作的实现 [J], 龚维荣
4.利用Delphi实现SQL Server数据库与Matlab的无缝集成 [J], 夏志军
5.DCOM技术的研究及在Delphi里的实现 [J], 杨小柳;王红蕾
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档