欢迎来到天天文库
浏览记录
ID:17809921
大小:45.00 KB
页数:11页
时间:2018-09-06
《delphi与matlab数据接口方案探讨》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Delphi与MATLAB数据接口方案探讨TheEdge推荐 [2006-10-30]出处:http://www.delphibbs.com/keylife/iblog_show.asp?xi作者:YellowFish 概述:本文阐述了如何利用Delphi灵活强大方便的编程能力和Matlab强大的科学计算能力,降低编写复杂算法的难度和时间,使Delphi算法程序的开发效率大大提高,收到事半功倍的效果。关键字:Matlab、科学计算、接口、数据交换引 言:最近在搞一个数字图像加密的课题,其中涉及到大量的矩阵及其他科学运算,在用Delphi实现时,可以想象在编写算法的时候遇到了大量的问
2、题,所以提出了这样一个想法:能否将后台运算模块通过某种接口的方式交由其他成熟的科学计算软件处理,而用Delphi从事其前台开发,这样将大大降低编写复杂算法的难度和缩短开发周期。相信这也是广大开发人员在遇到大量科学计算时所急待的问题,在论坛上也屡有人问起,笔者参阅了大量资料后归纳整理了几种方案,希望对大家有益^_^ 前言:Delphi作为一种功能强大的编程工具,具有易学易用、开发效率高,界面制作美观方便等优点,因此被很多程序员所青睐。Pascal作为历史上第一种结构化的高级语言,在从事复杂算法编写方面也有着诸多优点,可是在软件开发快速运作的今天,用Pascal原始开发一些复杂的算法,
3、不仅编译效率不高而且也影响开发进度,因此Delphi如何与科学计算软件相结合,从而高效地完成编程任务成为一个困扰很多程序员的问题。而Matlab就正是一种高效率的科学工程计算语言,它在矩阵运算、数值计算、数字信号处理、系统识别、自动控制、神经网络、图形显示等方面比其它语言有难以比拟的优势。将Delphi和Matlab相结合,利用Delphi灵活强大方便的编程能力,Matlab强大的科学计算能力就可以开发出功能强大、操作灵活的软件。以下给出5类数据接口方案供大家参考:方案一采用数据中转方式实现Delphi与Matlab交流...............................
4、......方案二基于DDE技术的动态数据交换..................................................方案三创造ActiveX对象实现数据交流................................................方案四利用动态链接库技术实现二者交流.............................................方案五利用mideva编译脱离matlab环境的动态链接库(注:此方法笔者尚未成功)2003-8-1821:21:00方案一采用数据中转方式实现Delphi与Matlab交流一、基
5、本思路Matlab输入数据的方法很多,其中利用M文件,直接把数据按元素列表方式引入Matlab工作内存方法,不仅语法简单,而且运行时只要输入文件名,Matlab就会自动按顺序执行M文件中的语句;Matlab数据输出的方法也有很多种,为了便于与Delphi应用程序接口,我们可以利用Matlab的指令Save输出数据。如指令Saveoutfile.datxy-ascii-double,可将变量x和y以16位ASCII码形式存入outfile.dat文件。基于上述matlab数据输入,输出的方法,我们可以利用M文件为中转,实现Delphi和Matlab的数据交换,当是要注意以下几点:(1
6、)由于Matlab的基本数据单位是矩阵,所以在delphi应用程序中我们只有通过文件变量,将参与运算的数据输出成M文本文件,以创建和保存矩阵数据。(2)由于Delphi应用程序在前台运行,因此在应用程序中调用Windows函数WinExec,即可执行Matlab.exe。(3)由于M文件,只有在Matlab集成环境中才能被识别和自动执行,而根据后台的要求不能显示地进入Matlab集成环境,考虑到Matlab环境变量由matlabrc.m文件定义,因此我们可以通过对matlabrc.m文件的修改(将Matlab要完成的输入数据、进行计算、输出数据过程、编写成M文件,加入matlabr
7、c.m中),从而实现Matlab的后台运作。二、Delphi如何将数据传递给Matlab这里举例说明更直观一些^_^例:进行矩阵运算(b'*b)-1*b'*y',其中b是t*2矩阵,y是1*t矩阵。在Delphi应用程序中,可以采用以下的程序段将参与运算的矩阵b、y保存成M文件,这样Matlab就可以通过执行相应的M文件,获得参与运算的矩阵b、y。应用程序段如下:(程序段中fb、fy是事先定义好的textfile类型的文件变量,b[i,j]、y是事先定义好的数组变量;
此文档下载收益归作者所有