VB和Matlab传递数据

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

VB和Matlab传递数据

lb107

VB和Matlab传递数据

请问:

我想将m函数文件编译成dll文件,在VB里面输入数据然后调用这个dll进行计算,这样能够实现吗?

有兄弟有相关的例子没?网上VC调用Matlab的例子挺多的,但没有VB调用Matlab的例子。

谢谢指点。

2006-3-5 20:19 taohe

Re:VB和Matlab传递数据

VB调用DLL会不会很复杂?总感觉VB属于高级编程语言,在调用DLL方面不会比VC更难才对。根据网上你发现的VC调用MATLAB产生的DLL的例子,大概了解MATLAB产生的DLL,然后在VB中调用,貌似应该顺理成章。

使用VB的话,一个好的方案可能是使用MATLAB产生的COM组件,而不是普通的DLL。在VB中可以很方便地使用这些COM组件。MATLAB的在线帮助有较详细的例子,不妨看看。

2006-3-5 23:01 bainhome

Re:VB和Matlab传递数据

前一段儿看了看书,做过两个简单的,下面这个是其中之一(曾发在别的论坛上,转一下),因最近实在是太忙,没有时间研究,所以比较基础,没有更加复杂的Trick 比如将VBtext中的数组作为COM的input、图形绘制等等,VB代码:[code] Private addn As addn.Add

Private Sub Command1_Click()

Dim x As Double

Dim y As Variant

x = CDbl(Text1.Text)

Call addn.numadd(1, y, x)

Text2.Text = y

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

Set addn = New addn.Add

Form1.Caption = "VB调用MATLAB示例"

Text1.Text = 2

End Sub

[/code]

[code] function y=numadd(x)

y=2*x; [/code]

COM组件调用格式:

[code]call h.func(numout,arg1,arg2,...)[/code]

MATLAB中的函数书写格式:

[code][out1,out2,out3]=myfunc(arg1,arg2)[/code]

则VB的调用应该为:

[code]call

object.myfunc(3,out1inVB,out2inVB,out3inVB,arg1inVB,arg2inVB)[/code] “3”指的是输出变量的数目

另外当多个版本的MATLAB在同一PC上时,VB只认其中一个版本产生的COM,不知道是不是环境变量设置的问题。

2006-3-6 09:41 lb107

Re:VB和Matlab传递数据

谢谢楼上二位的指点!!

我的想法也是利用comtool直接将m文件编译成COM组件,然后在VB中调用实现应该是没有问题,但是在交换数据方面肯呢感有点难度,我只想找几个具体的例子看看其调用的根据体过程

谢谢!!

2006-3-6 19:53 taohe

Re:VB和Matlab传递数据

[quote][b]lb107 wrote:[/b]

谢谢楼上二位的指点!!

我的想法也是利用comtool直接将m文件编译成COM组件,然后在VB中调用实现应该是没有问题,但是在交换数据方面肯呢感有点难度,我只想找几个具体的例子看看其调用的根据体过程

谢谢!!

[/quote]

如果用comtool也就是使用COM组件的话,事情就更好办了。因为进入COM世界后,所有的数据都是VARIANT,而VB和COM是非常亲近的关系,在VB中使用COM比起其他语言比如C++来说显得更为轻松。还得重复一下,matlab的在线帮助上关于COM组件的应用几乎全部是VB作为应用程序例子,不妨看看。2006-3-6 20:05 lb107Re:VB和Matlab传递数据

我的英语不太好

taohe 老师能给一个具体的链接地址吗??

谢谢

2006-3-6 20:46 taohe

Re:VB和Matlab传递数据

你指什么连接地址?我刚才说的在线帮助是matlab安装文档。

本来matlab的公司MathWorks的网站上有每次最新版的matlab的帮助文档连接。不过现在MathWorks网站上的连接好像已经变成新版matlab R2006a的文档了。所以只好看matlab安装后的在线帮助了。

matlab不知你用那个版本的matlab,不管那个版本,在matlab环境中运行doc,然后在出来的帮助文档中寻找相关的话题。如果是matlab6.5.x的话,应该在matlab com builder,如果是matlab7.x的话应该是matlab builder for com。

里面有例子程序,如果VB好的话,应该没有问题的。别怕英文。

可惜我是VB盲,无法给出具体的帮助。

Good luck!

2006-3-6 22:40 lb107

Re:VB和Matlab传递数据

再次谢谢

2006-3-12 21:35 godzilla2000cn

Re:VB和Matlab传递数据

如果matlab中生成的图片怎么传到VB里,也就是在VB中用什么控件来接收matlab的fig???

2006-11-1 19:46 tian7tian

大家好啊!

我现在是将m文件组成com组件,还没搞定呢,总出现错误!

2006-11-8 19:46 jimin

看了bainhome版主的一个例子后,做了个vb调用matlab时隐藏matlab figure 的例子

Private Sub Command1_Click()

Dim objMATLAB As Object

Set objMATLAB = CreateObject("matlab.application")

Dim strEnter As String

Dim strCommand As String

strEnter = Chr(13) & Chr(10)

strCommand = "figure('visible', 'off', 'Units','points','PaperUnits', 'points');" strCommand = strCommand & strEnter

strCommand = strCommand & "surf(peaks(25));"

strCommand = strCommand & strEnter

strCommand = strCommand & "print -dmeta"

strCommand = strCommand & strEnter

strCommand = strCommand & "close(gcf)"

strCommand = strCommand & strEnter

objMATLAB.execute (strCommand)

imgDraw.Picture = Clipboard.GetData()

imgDraw.Refresh

Set objMATLAB = Nothing

End Sub

2006-11-12 10:42 WaitingForMe

Matlab的代码或者窗口, 用combuilder编译以后, 可以直接在VB里面引用. 如果需要移植到其他计算机上, 需要在目标计算机上安装一个虚拟机, 大概8M大小. 2006-11-12 13:59 bainhome

[quote]Matlab的代码或者窗口, 用combuilder编译以后, 可以直接在VB里面引用. 如果需要移植到其他计算机上, 需要在目标计算机上安装一个虚拟机, 大概8M大小.[/quote]

前一句话已经基本实现,后一句话不太明白...什么虚拟机?还是java虚拟机吗(自己感觉不像)?请教一下^_^

2006-11-29 19:23 tian7tian

关于bainhome写的程序,我问个问题,关于

function y=numadd(x)

其中y定义为variant,x定义为double类型;是不是类型是固定的呢?

x可以定义为string类型么?

2006-12-11 14:43 tian7tian

有哪位了解的话,有时间的话,给答复一下,谢谢了!!

2006-12-31 01:24 WaitingForMe

[quote]原帖由[i]bainhome[/i] 于2006-11-12 13:59 发表

前一句话已经基本实现,后一句话不太明白...什么虚拟机?还是java虚拟机吗(自己感觉不像)?请教一下^_^ [/quote]

Combuilder创建的程序,移植到没有安装Matlab的电脑上的时候,需要安装一个什么包,都忘了,这个是Matlab的帮助,自己看帮助吧

MATLAB COM Builder: Overview: Packaging and Distributing the Component 2007-7-20 15:53 shiwenyaboa

相关文档
最新文档