当前位置:首页 » 编程软件 » cmatlab混合编程

cmatlab混合编程

发布时间: 2023-07-23 16:32:56

A. Matlab混合编程之使用C\UDP动态链接库传输数据的秘诀

方法/步骤
1、启动两个matlab软件,分别加载Dll
loadlibrary('CSForUDLL.dll','CSForUDLL.h')
2、libfunctions
CSForUDLL
-full
查看一下Dll里的所有函数
3、在一个matlab运算add_server函数,作为启动Server端
我写的dll第一个参数为要发送的数字
calllib('CSForUDLL','add_server',2,2,0)
之行结束会发现Server端在一直等待。
4、在另一个matlab上运行add_client函数,作为启动Client端
同理,我的dll第一个参数用来发送数字;
calllib('CSForUDLL','add_client',2,2,0)
5、回车运行,会发现返回一个数字。
这个数字是从Server端发送过来的。
6、再看一下Server端,收到Client发送的数字1

B. matlab与c/c++混合编程,急!

目前常用的的是4.5版本,包含matlab.h头文件,和v4501v.dll
ago4501两个动态库即可。
具体可参考matcom帮助或者留言给我

C. matlab混合编程怎么设置环境

脱离MATLAB工作环境,实现MATLAB与VisualBasic语言的混合编程

以下讨论是在MATLAB7.0软件和vc++6.0软件环境中进行:
一、将MATLAB的.m文件编译成.exe文件,实现MATLAB与Visual Basic语言的混合编程
1、将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的81行 set_param(0,'PaperType',defaultpaper)
和82行set_param(0,'PaperUnits',defaultunits)
注释掉,或者干脆删掉,否则,在没有安装MATLAB的机子上运行MATLAB与VisualBasic语链世培言混合编成的程序时,会出现:“Undefinedcommand/function 'set_param'”的错误。
2、在Matlab7 的命令窗口运行下列命令:rehash toolboxcache
完成工具箱加载和更新。
3、在Matlab7 的命令窗口运棚唯行下列命令:
Mcc –m ***.m
将MATLAB的.m文件(M文件必须以Function开始,即必须是函数文件)编译成.exe文件,将编译生成的.ctf文件和.exe文件拷贝到VB工程的目录中,他们是脱离matlab环境运行必返雀需的文件;
4、在VB工程中用下列语句对MATLAB的.m文件编译成的.exe文件进行调用:
lTask = Shell("rt2.exe",vbHide)
hProc= OpenProcess(PROCESS_QUERY_INFORMATION, False, lTask)
IflTask = 0 Then MsgBox "程序执行失败"
Do
GetExitCodeProcess hProc, lExit
DoEvents
LoopWhile lExit = STILL_ACTIVE
5、将VB工程进行打包,打包时,要将在MATLAB中编译生成的.ctf文件和.exe文件添加到VB工程包中,他们是脱离matlab环境运行必需的文件;
6、将打包好的VB工程安装包拷贝到客户计算机中,并将matlab7\toolbox\compiler\deploy\win32下的MCRInstaller.exe程序也一起拷贝到客户计算机中。
7、在客户计算机中,运行程序:MCRInstaller.exe,将matlab compiler runtime安装到客户计算机中。注意:安装目录必须位于它所在的文件夹
8、运行VB工程安装包中的setup程序,进行VB工程的程序安装;
至此,在客户机中,即可正常运行MATLAB与Visual Basic语言混合编成的程序。
注意事项:
1、在VB工程所在目录中,不能有其它的.dll文件存在,否则在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,会出现下列错误提示:
“Warning:Failed to startthe Java Virtual machine.”
“Warning:Disabling Javasupport.”
“Undefined function orvariable ‘matlabrc’.”
二、将MATLAB的.m文件编译成.dll文件,实现MATLAB与Visual Basic语言的混合编程
1、将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的81行 set_param(0,'PaperType',defaultpaper)
和82行set_param(0,'PaperUnits',defaultunits)
注释掉,或者干脆删掉,否则,在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,会出现:“Undefined command/function 'set_param'”的错误。
2、在Matlab7 的命令窗口运行下列命令:rehash toolboxcache
完成工具箱加载和更新。
3、安装vc++6.0软件,为Matlab编译器的安装和配置做准备;
4、在Matlab7 的命令窗口运行下列命令:
mbuild –setup
对Matlab的编译器进行安装和配置;
5、在Matlab中创建COM组件
用Matlab COM生成器创建COM组件,包括4个步骤,即创建工程、管理m文件、生成组件、打包和分发组件。
在Matlab中创建COM组件步骤如下:
(1) 创建工程。在Matlab命令窗中键入comtool命令,调用Matlab编译器,打开Matlab COM Build主窗口。在该窗口中,选择File→New Project,创建一个新的工程,在此对话框中对新工程进行设置,输入组件名和类名,选择合适的编译器。
(2) 管理m文件。单击“AddFile”按钮,添加编写好的M函数文件(M文件必须以Function开始,即必须是函数文件)。
(3) 生成组件。使用Build--àCom object菜单,创建COM组件,将MATLAB的.m文件编译成.dll文件。
(4)打包和分发组件:编译成功并通过测试后,就可以把有关文件打包和分发给目标器。单击 “Component”→”Package Component”,创建自解压可执行程序。注意:在使用Component--àPackageComponent菜单,生成.exe文件时,要将“includeMCR”前的选择框选中,使生成的.exe文件中能包含MCRInstaller.exe程序。
6、将编译生成的.ctf文件和.dll文件以及.exe文件拷贝到VB工程的目录中;
7、创建VB工程并调用COM组件新建“标准EXE”工程,进入VB编程环境,在“工程”菜单中单击“引用”选项, 在列表中选中第5步中生成的这些组件,以及添加MWComUtil 7.0 Type Library,单击“确定”按钮。
在VB工程引用这些组件后,需按照以下步骤来调用Matlab文件:
Dim rt2 As rt2_1.rt2_1class '声明一个COM组件
Set rt2 = New rt2_1.rt2_1class
Call rt2.rt2 '执行rt2_1_1_0.dll文件
8、将VB工程进行打包,打包时,要将在MATLAB中编译生成的.ctf文件和.dll文件以及.exe添加到VB工程包中;
9、在客户计算机中,运行第5步中生成的.exe程序,对第5步中生成的.dll动态链接库进行注册,并自动运行MCRInstaller.exe程序,将matlab compiler runtime安装到客户计算机中。
10、将打包好的VB工程安装包拷贝到客户计算机中,运行VB工程安装包中的setup程序,进行VB工程的程序安装;
至此,在客户机中,即可正常运行MATLAB与Visual Basic语言混合编成的程序。
注意事项:
1、VB编译生成的MATLAB与Visual Basic语言混合编成的exe应用程序不能简单的移植,必须要打包,在打包时应带上dll文件,然后将打包好的VB工程安装包拷贝到客户机中,运行VB工程安装包中的setup.exe安装程序,进行VB工程的安装,VB工程安装完成后,再在客户机中,运行第5步中生成的.exe程序,就可以避免出现下列各种错误提示:
(1)“Warning:Failedto start the Java Virtualmachine.”
“Warning:Disabling Javasupport.”
“Undefined function orvariable ‘matlabrc’.”
(2)“Automation错误”或者“自动化错误”
(3)“运行时错误’429’:ActiveX部件不能创建对象”
(4)“MCR instance isnot available.”
2、在VB工程所在目录中,除了包含第5步中生成的.dll动态链接库文件外,不能有其它的.dll文件存在,否则在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,会出现下列错误提示:
“Warning:Failed to startthe Java Virtual machine.”
“Warning:Disabling Javasupport.”
“Undefined function orvariable ‘matlabrc’.”
3、如果直接将Vb工程程序拷贝到客户机中,而不是通过安装Vb工程程序,来运行MATLAB与VisualBasic语言混合编成的程序时,会出现:“Automation错误”或者“自动化错误”的错误提示,这时可以通过下列方法之一解决:
(1)在客户机中运行第5步中生成的.exe程序,对第5步中生成的.dll动态链接库进行注册,就可以解决“Automation错误”或者“自动化错误”引起的程序运行异常。
(2)在客户机中直接运行regsvr32.exe程序,对第5步中生成的.dll动态链接库进行注册,也可以解决“Automation错误”或者“自动化错误”引起的程序运行异常。
4、如果在客户机中,没有运行第5步中生成的.exe程序,对第5步中生成的.dll动态链接库进行注册,那么在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,就会出现:“运行时错误’429’:ActiveX部件不能创建对象”的提示,或者出现:“Automation错误”或者“自动化错误”的错误提示。
5、如果在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,出现:“MCR instance isnot available.”的错误提示时,可以通过将打包好的VB工程安装包拷贝到客户计算机中,运行VB工程安装包中的setup程序,进行VB工程的程序安装,就可以解决这种错误。

D. 哪位大侠知道vc和matlab混合编程

MATLAB 与Visual C++结合的方法有多种,但其实用程度与范围不同。目前主要有以下三种方式。
1. 通过Matlab引擎(Engine)
采用客户机/服务器(Client/Service)的计算模式,通过windows的ActiveX通道和MATLAB进行结合。MATLAB引擎采用客户机和服务器计算方式,提供了一组Matlab API函数,用户不必关心Matlab引擎是如何实现的,只要调用这些函数即可。正是通过这些API函数实现应用程序进程之间的传递函数,从而实现Matlab与VC的混合编程。具体应用中,往往在VC中设计程序框架, VC的C语言或C++语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,通过调用MATLAB引擎在后台与MATLAB服务器建立连接,实现动态通信。这种处理方法不要求链接整个Matlab,只需嵌入必要的Matlab引擎库,节省了大量的系统资源,使应用程序整体性能更好,处理效率更高,但这种混合编程的方法需要MATLAB在后台适时运行不能脱离Matlab环境,否则影响了程序的通用性,因此这种方法在实际开发过程中很少采用。
2. 通过DLL实现混合编程
DLL是动态链接库的英文缩写,是一个可执行的二进制文件。把很多通用的功能放在DLL 中,可供多个应用程序调用,而不是每个应用程序在连接时都要增加一个库中目标代码的拷贝。通过Matlab自带的Compiler编译器,可以把由Matlab编写的m 函数文件编译成动态链接库(dl1)。或者通过Matlab提供的组件功能,运用VC+十向导自动生成m文件的动态链接库。在VC程序中调用封装的函数,实现数值算法的运用。这种方法只需在开发和发布中包含其生成的动态库就可以了,可以使程序脱离Matlab可以整体减少文件外部存储空间的占有量,并实现了代码共享。
3.使用COM技术实现混合编程
COM技术是一种应用广泛、方便灵活的方法,是利用MATLAB提供的Deploy Tool工具实现MATLAB与C/C++的混合编程。COM给软件开发人员提供了一种共享二进制代码的方法,这种共享并不局限于某种编程语言。

E. 如何将MATLAB文件与c#混合编程

没有做过这方面的编程,不过之前在杂志上看过相关的文章,是基于MatlAB与VB的混合编程,由于MatlAB不能开发可执行文件,程序必须在其环境运行,MatlAB提供了与其他高级语言的接口,以实现它们的混合编程。
文章介绍了两种接口方法:引入1.Matrix
VB
2.借助Matcom将MatlAB函数转换为VB可调用的DLL文件。具体方法你可以查看相关资料

F. matlab与C++混合编程(高手请进)

源代码:
#include "D:\extern\include\mat.h"

void main() {
MATFile *pMF; // mat文件
mxArray *pA; // 矩阵指针
double *A; // 数据指针
int i, j;
// 打开一个test.mat文件,只写,如果不存在就新建,否则删除重建
pMF = matOpen("test.mat", "w");
// 新建一个12*4的矩阵只有实部(在MATLAB里矩阵都是复矩阵)
pA = mxCreateDoubleMatrix(12, 4, mxREAL);
// 给这个矩阵命名为x
mxSetName(pA, "x");
// 让指针Array指向这个矩阵的数据
A = mxGetPr(pA);
// 在VC里数组是按行排放的,在MATLAB里矩阵是按列排放的,)
for (i = 0; i < 12; i++)
for (j = 0; j < 4; j++)
A[j * 12 + i] = i + 0.001 * j;
// 将矩阵写到文件test内
matPutArray(pMF, pA);
// 释放矩阵空间
mxDestroyArray(pA);
// 关闭文件
matClose(pMF);
}

G. vc matlab 混合编程,哪种方式最好

调用matlab引擎:是要求MATLAB作为VC的一个后台来调用,从本质来说还是启庆带在MATLAB中差升运行的程序;
基于matcom:可以脱离MATLAB的环境,但是貌悄芦似有一部分MATLBA中的函数不能完全调用;而且方法简单;
基于COM的:这个我不太会也没有试过;
我推荐将MATLAB的程序编译成动态库在VC中调用,这也可以完全脱离MATLAB的环境,可以完美调用

H. matlab VC混合编程调用神经网络工具箱

调用MATLAB Engine虽然可以实现对神经网络工具箱的功能,但是因为这种方法是基于C/S模式的,效率很低,而且需要在matlab下实现其功能,无法脱离matlab直接运行,所以,基于这个原因,我放弃了利用MATLAB Engine来实现混合编程。利用C++数学库虽然可以脱离MATLAB直接运行,但是C++数学库并不支持神经网络工具箱,所以,无法实现基于神经网络的混合编程。利用mcc命令虽然可以直接生成.exe文件,并可以脱离MATLAB在VC++中直接运行,但是因为其自身的诸多缺点,这种方法并不能编译神经网络函数为C++文件,所以,也无法胜任这个任务。 最后,只有COM组件这一个办法了,由于COM组件技术的强大功能,利用matlab的COM Builder工具可以实现脱离matlab的混合编程,并成功的调用了神经网络工具箱。

热点内容
用gcc编译16位汇编 发布:2025-02-06 09:06:07 浏览:822
什么低端安卓手机不卡 发布:2025-02-06 09:03:32 浏览:13
我的世界服务器卡领地 发布:2025-02-06 08:50:45 浏览:255
我的世界公网ip服务器 发布:2025-02-06 08:46:28 浏览:772
php数组值求和 发布:2025-02-06 08:30:56 浏览:819
java类可以作为 发布:2025-02-06 08:28:54 浏览:412
sql更改列 发布:2025-02-06 08:22:37 浏览:396
创建索引sql 发布:2025-02-06 08:22:29 浏览:235
西门子有密码如何初始化 发布:2025-02-06 08:22:28 浏览:594
EV压缩 发布:2025-02-06 08:21:13 浏览:336