我们热爱生命科学!-生物行

[推荐] Delphi与MATLAB数据接口方案探讨

时间:2006-01-12 08:54来源:Internet 作者:bioguider 点击: 1111次

Delphi与MATLAB数据接口方案探讨:

采用数据中转方式实现Delphi与Matlab交流

一、基本思路   Matlab输入数据的方法很多,其中利用M文件,直接把数据按元素列表方式引入Matlab工作内存方法,不仅语法简单,而且运行时只要输入文件名,Matlab就会自动按顺序执行M文件中的语句;Matlab数据输出的方法也有很多种,为了便于与Delphi应用程序接口,我们可以利用Matlab的指令Save输出数据。如指令Save outfile.dat x y -ascii -double,可将变量x和y以16位ASCII码形式存入outfile.dat文件。  

基于上述matlab数据输入,输出的方法,我们可以利用M文件为中转,实现Delphi和Matlab的数据交换,当是要注意以下几点:

(1)由于Matlab的基本数据单位是矩阵,所以在delphi应用程序中我们只有通过文件变量,将参与运算的数据输出成M文本文件,以创建和保存矩阵数据。

(2)由于Delphi应用程序在前台运行,因此在应用程序中调用Windows函数WinExec,即可执行Matlab.exe。

(3)由于M文件,只有在Matlab集成环境中才能被识别和自动执行,而根据后台的要求不能显示地进入Matlab集成环境,考虑到Matlab环境变量由matlabrc.m文件定义,因此我们可以通过对matlabrc.m文件的修改(将Matlab要完成的输入数据、进行计算、输出数据过程、编写成M文件,加入matlabrc.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[i]是事先定义好的数组变量;'c:\matlabfile\delphioutb.m'是保存矩阵b的M文件路径及文件名,'c:\matlabfile\delphiouty.m'是保存矩阵y的M文件路径及文件名)*********创建保存矩阵b的M文件*********//注:在Matlab中整个输人矩阵必须以"[]"为其首尾,矩阵的行与行之间必须用分号";"或回车位隔离,矩阵元素必须由逗号","或空格分离。assign(fb,'c:\matlabfile\delphioutb.m');Rewrite(Fb);write(fb,'b[']; for i:=0 to t-2 do    

for j:=0 to 1 do      

 begin                

(责任编辑:泉水)
顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片