声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4011|回复: 16

[混合编程] [求助]vb调用matlab,如何不出现matlab的图形窗

[复制链接]
发表于 2006-6-2 23:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我在用VB调用MATLAB程序时,代码如下:
  1. Private Sub Command1_Click()
  2. Dim Matlab As Object
  3. Dim result As String
  4. Set Matlab = CreateObject("Matlab.application")

  5. result = Matlab.execute("t=1:5;y=cos(t);plot(t,y)")

  6. result = Matlab.execute("print-dbitmap")
  7. Image1.Picture = Clipboard.GetData()
  8. End Sub
复制代码


我想问下怎样才能运行时不出现matlab的图形窗

另外
vb调用matlab,如何使用GetFullMatrix。
回复
分享到:

使用道具 举报

发表于 2006-6-2 23:36 | 显示全部楼层
在matlab 里面设置,查看figure命令
,做相应的处理

评分

1

查看全部评分

发表于 2006-6-4 18:17 | 显示全部楼层
怎么样,问题解决了吗?如果解决了也请告诉大家哦。^_^
发表于 2006-6-5 00:15 | 显示全部楼层
MY WAY:
  1. Private Sub cmdDraw_Click()
  2. Dim objMATLAB As Object
  3. Set objMATLAB = CreateObject("matlab.application")
  4. Dim strEnter As String
  5. Dim strCommand As String
  6. strEnter = Chr(13) & Chr(10)
  7. strCommand = "[x,y,z]=peaks(30);"
  8. strCommand = strCommand & strEnter
  9. strCommand = strCommand & "surfc(x,y,z)"
  10. strCommand = strCommand & strEnter
  11. strCommand = strCommand & "shading interp"
  12. strCommand = strCommand & strEnter
  13. strCommand = strCommand & "saveas(gcf,'c:\temp.bmp')"
  14. objMATLAB.execute (strCommand)
  15. imgDraw.Picture = LoadPicture("C:\temp.bmp")
  16. imgDraw.Refresh
  17. Set objMATLAB = Nothing
  18. End Sub
复制代码

评分

1

查看全部评分

发表于 2006-6-6 16:36 | 显示全部楼层
<P>请问一下 ,在vb中引用哪个才能和matlab 连接啊 /<BR></P>
发表于 2006-6-14 12:18 | 显示全部楼层
有个将窗口最小化的函数,不知能不能达到你想要的结果,网上有下载的
发表于 2006-6-15 09:32 | 显示全部楼层
  1. Private Sub Command1_Click()
  2. Dim Matlab As Object
  3. Dim result As String
  4. Set Matlab = CreateObject("Matlab.application")
  5. result = Matlab.execute("figure('visible', 'off')")
  6. result = Matlab.execute("t=1:5;y=cos(t);plot(t,y)")

  7. result = Matlab.execute("print-dmeta")
  8. Image1.Picture = Clipboard.GetData()
  9. End Sub
复制代码


不知行不行?
发表于 2006-6-15 09:45 | 显示全部楼层
解决了一个难题,大家积极发言阿
发表于 2006-11-7 14:46 | 显示全部楼层
怎样才能运行时不出现matlab的图形窗?
发表于 2006-11-7 14:51 | 显示全部楼层
按bainhome的方法,可以把图绘入vb窗口,但有matlab的图形窗出现
用figure('visible','off')好像不行
发表于 2006-11-7 15:05 | 显示全部楼层
原帖由 WWLLXX2001 于 2006-11-7 14:51 发表
按bainhome的方法,可以把图绘入vb窗口,但有matlab的图形窗出现
用figure('visible','off')好像不行

来个抛砖引玉
董维国老师所写的深入浅出matlab7.x  混合编程中有一节是介绍
7.42 在mfc应用程序中隐藏matlab的figure窗口
我想vb vc应该类似
看能不能从中找找思路,然后应用到vb中

评分

1

查看全部评分

发表于 2006-11-7 16:50 | 显示全部楼层
我用如下方法可以使figure窗口关掉,缺点是figure窗口还是会闪一下
  1. Public Class Form1
  2.     Private Sub cmdDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDraw.Click
  3.         Dim objMATLAB As Object
  4.         objMATLAB = CreateObject("matlab.application")
  5.         Dim strEnter As String
  6.         Dim strCommand As String
  7.         strEnter = Chr(13) & Chr(10)
  8.         strCommand = "[x,y,z]=peaks(30);"
  9.         strCommand = strCommand & strEnter
  10.         strCommand = strCommand & "surfc(x,y,z);"
  11.         strCommand = strCommand & strEnter
  12.         strCommand = strCommand & "shading interp;"
  13.         strCommand = strCommand & strEnter
  14.         strCommand = strCommand & "saveas(gcf,'c:\temp.bmp');"
  15.         strCommand = strCommand & strEnter
  16.         strCommand = strCommand & "close(1)"
  17.         objMATLAB.execute(strCommand)   
  18.         imgDraw.Image = Image.FromFile("C:\temp.bmp")
  19.         imgDraw.Refresh()
  20.         objMATLAB = Nothing

  21.     End Sub
  22. End Class
复制代码

评分

1

查看全部评分

发表于 2006-11-8 11:32 | 显示全部楼层
把我改的拿出来和大家分享一下,大家可以测试一下
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-8 11:38 | 显示全部楼层
to   
WWLLXX2001
你的程序我好象运行不了,不知道问题出在什么地方
Public Class Form1
    Private Sub cmdDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDraw.Click
这几句不大懂,能否解释一下
发表于 2006-11-8 16:14 | 显示全部楼层
我用的是visual basic 2005
在vb6.0里是运行不了的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 20:36 , Processed in 0.065022 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表