其他语言使用matlab,Matlab与其他语言和软件的接口问题

1).如何在Matlab中读取Excel的xls数据文件?

2).如何在Excel中嵌入Matlab?

3).mcc,mex,mbuild都是作什么用的?

4).用mcc生成的独立执行exe文件怎么发布?

5).如何在VC中调用Matlab engine?

6).如何在Matlab调用外部的c/c++/fortran函数?

7).如何在Delphi中调用Matlab(ActiveX).?

8).如何在C++ Builder中调用Matlab(ActiveX).?

9).如何在VB中调用Matlab(ActiveX).?

10).如何在VC中调用Matlab编译的cpp文件

11).如何在VC中调用mcc编译的dll?

12).如何在Matlab中调用其他软件的ActiveX接口?

===================================

1)如何在Matlab中读取Excel的xls数据文件?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22. BigGreen/MathTools#

使用xlsread()函数,或者使用excel的ActiveX接口来进行更复杂的操作,

参见:

http://www.mathworks.com/support/solutions/data/25179.shtml

2)如何在Excel中嵌入Matlab?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

如果你的Matlab安装有ExcelLink,它可以实现Excel与Matlab直接的数

据交换,可以在Excel中直接调用matlab的函数,进行绘图或者数据处理。

不过如果没有安装ExcelLink,你仍然可以使用Matlab的ActiveX接口来

调用matlab,下面是一个Excel宏函数,作为例子:

#Brett Shoelson(bshoelson@cox.rr.com),2001/11/01,comp.soft-sys.matlab#

Sub CallMatlab()

' Dimension variables

Dim MatLab As Object

Dim Result

Dim Invals(3, 4) As Double

Dim MImag() As Double

Dim i, j As Integer

' Invoke Matlab

Set MatLab = CreateObject("Matlab.Application")

' Read Invals from current spreadsheet

' (Assume Invals stored in B3:E5)

For i = 0 To 2

For j = 0 To 3

Invals(i, j) = ActiveSheet.Range(Cells(i + 3, j + 2), Cells(i + 3, j +

2)).value

Next j

Next i

' Send Invals to Matlab

Call MatLab.PutFullMatrix("a", "base", Invals, MImag)

' Send instructions to Matlab

Result = MatLab.Execute("b=a.^2;")

' Retrieve Result

Call MatLab.GetFullMatrix("b", "base", Invals, MImag)

' Store Result in B8:E10

ActiveSheet.Range("B8:E10").value = Invals

End Sub

3)mcc,mex,mbuild都是作什么用的?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

这个问题我一直都不是很清楚,看过compiler的PDF帮助之后,知道个

大概,也不知道说得对不对:

mcc(生成c/cpp文件)-----m--mex------ mex/dll

|---x--mbuild-----C/C++ compiler----独立执行的程序

mex文件是一种编译后的动态连接文件,需要在matlab中执行,优点

是执行速度比m文件快,而且如果你不想提供m文件源码,可以使用

编译后的mex/dll文件。

mbuild通过调用外部的c/c++编译器,把mcc翻译成的c/c++源码

与matlab的c/c++数学库、图形库链接,得到独立执行的可执行程序。

4)用mcc生成的独立执行exe文件怎么发布?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

使用matlab自己提供的mglinstaller,路径在

\extern\lib\win32\mglinstaller.exe

参考C++ Math Lib,C++ Graphic Lib,Compiler的PDF帮助中都有关于打包

和安装的详细介绍。

5)如何在VC中调用Matlab engine?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

matlab提供了ActiveX接口,你可以功过调用接口的底层函数来实现在

你的C++/VB/Delphi程序中启动、执行matlab并交换数据,但matlab提

供了一个对这些底层ActiveX接口函数的封装,叫作maltab engine,在

C语言中调用engine的例子参见:

http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_extern

al/ch06eng4.shtml#25603

或者

http://www.matlab-world.com/matlab_and_c.htm#VC_ml

http://bbs.dartmouth.edu/cgi-bin/bbscon?

board=MathTools&file=M.1022120287.A&num=23

可以使用engEvalString直接在matlab中执行语句,也可以

用mxCreateDoubleMatrix, mxDestroyArray,engPutArray,engGetArray等函数

创建矩阵和数据交换。

具体参见:

http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external

/matlab_external.shtml

6)如何在Matlab调用外部的c/c++/fortran函数?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

在用matlab的mex把外部c/for程序编译成mex/dll之前,你需要在你的外

部函数的源码中添加一个mexFunction(),具体书写格式和例子参见

http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/apiext.pdf

7)如何在Delphi中调用Matlab(ActiveX)?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

从这个地址下载例子:

http://www.djpate.freeserve.co.uk/Matlab.htm

还有一种方法是利用DelphiMEX,下载地址:

http://Radio-BIP.qc.ca/DelphiMEX/DelphiMEX.html

下面是把Alex Conradie的例子中选了一些主要的语句:

var

V : Variant;

MReal : OleVariant;

MImage : OleVariant;

begin

i,j : integer;

MReal := VarArrayCreate([0, 1, 0, 3], varDouble);

MImage := VarArrayCreate([0,0,0,0], varDouble);

V := CreateOLEObject('Matlab.Application');

V.Execute('a=[1 2 3 4; 5 6 7 8]');

V.GetFullMatrix('a','base',VarArrayRef(MReal),VararrayRef(MImage));

for i := 0 to 1 do

for j := 0 to 3 do

Stringgrid1.Cells[j,i] := MReal[i,j];

V.Execute('peaks');

MReal := VarArrayCreate([0, 1, 0, 3], varDouble);

MImage := VarArrayCreate([0,0,0,0], varDouble);

for i := 0 to 1 do

for j := 0 to 3 do

MReal[i,j] := i+4;

V.PutFullmatrix('b','base',VarArrayRef(MReal),VararrayRef(MImage));

end

8)如何在C++ Builder中调用Matlab(ActiveX)?

:# Serge Kanilo (skanilo@hotmail.com), 2000/08/01. comp.soft-sys.matlab #

I once called a Matlab function out of Borland Builder 4.0.

I used an automation

#include

...

Variant matlab;

matlab = Variant::CreateObject("Matlab.Application");

Procedure exec("Execute");

matlab.Exec(exec << "calc");

9)如何在VB中调用Matlab(ActiveX)?

:# Taras Chaban (taras@camcontrol.co.uk), 1999/03/09.

comp.soft-sys.matlab #

Hi,

You can call MATLAB from VB using ActiveX interface. A simple example

could

be:

Sub tot1()

Dim MatLab As Object

Dim Result As String

Dim MReal(1, 3) As Double

Dim MImag() As Double

Set MatLab = CreateObject("MatLab.Application")

Result = MatLab.Execute("a = [1 2 3 4; 5 6 7 8;]")

Call MatLab.GetFullMatrix("a", "base", MReal, MImag)

End Sub

10)如何在VC中调用Matlab编译的cpp文件

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

参见

http://www.mathworks.com/support/solutions/data/21291.shtml

中文地址请大家推荐

11)如何在VC中调用mcc编译的dll?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

参见

http://www.mathworks.com/support/solutions/data/28621.shtml

中文地址请大家推荐

12)如何在Matlab中调用其他软件的ActiveX接口?

:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22.BigGreen/MathTools#

在Matlab中参见actxserver和actxcontrol的帮助

这里是一个在matlab中操纵PowerPoint的例子:

http://groups.google.com/groups?

selm=370E09E2.275EF5E8%40mail.northgrum.com&output=gplain

中文地址请大家推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值