在Delphi中集成Matlab中生成的COM组件应该不困难吧? ( 积分: 100 )

  • 主题发起人 主题发起人 shijie
  • 开始时间 开始时间
S

shijie

Unregistered / Unconfirmed
GUEST, unregistred user!
希望利用Matlab中的一些计算功能
 
希望利用Matlab中的一些计算功能
 
没有问题,有两种方法
1.直接用ole调用matlab,这种需要机子上装有matlab
2.可以使用matcom将m文件或marlab函数编译成com,供其它程序调用
 
To:gihelo
您说的第一种方法是不是使用计算引擎?
使用matcom将m文件或marlab函数编译成com,com组件的接口怎么定义?怎样用Delphi写客户端程序?
 
To:gihelo
“可以使用matcom将m文件或marlab函数编译成com”,这复杂吗?具体该如何做?
 
1.第一种方法的例子
FUNCTION GetFullMatrix (in Interface)
returnType : HResult
parameters:
name : BSTR [in]
worskace : BSTR [in]
pr : safeArray of double* [in,out]
pi : safeArray of double* [in,out]

FUNCTION PutFullMatrix (in Interface)

returnType : HResult
parameters:
name : BSTR [in]
worskace : BSTR [in]
pr : safeArray of double [in]
pi : safeArray of double [in]
var
FMatlab : Variant;
pr,pi : Variant
begin

FMatlab := createOleObject('Matlab.application');

FMatlab.execute('a=13;');

(safeArray)
pr := varArrayCreate([0,1],varDouble);
pi := varArrayCreate([0,1],varDouble);
// Error
FMatlab.putFullMatrix('myVariable','workspace',pr,pi);
...
end;

第二种方法:你可以参考下面一篇文章
http://hanlin.hbu.edu.cn/personal/zhengkun/wenzhang5.htm

matcom下载地址:
http://www.pris.net.cn/down2/Software.Asp?id=1909

另:现在也许有另一种的解决方法,就是使用python和delphi混合编程,利用python的matplotlib库来实现常规的matlab函数,这种方法也比较可行
 
谢谢gihelo,你提到的第二种方法是不是将M文件作成C语言的动态链接库,然后调用动态链接库?如果是调用COM组件,还需要编写客户端程序,而编写编写客户端程序还需要知道COM组件的接口信息,我还是不清楚怎么用Delphi为Matlab中生成的COM组件写客户端程序。
 
在Matlab7中matcom好象已经没有了。
 
后退
顶部