matlab与C混编
一般情况下,matlab与C混编时是matlab调用C好实现还是C调用matlab好实现呢?PS:现在做的系统,matlab主要是进行图像处理工作,C进行发音,且用win...
一般情况下,matlab与C混编时是matlab调用C好实现还是C调用matlab好实现呢?
PS:现在做的系统,matlab主要是进行图像处理工作,C进行发音,且用win32应用程序编的。。。本人菜鸟,多谢众大侠帮忙,感激不尽! 展开
PS:现在做的系统,matlab主要是进行图像处理工作,C进行发音,且用win32应用程序编的。。。本人菜鸟,多谢众大侠帮忙,感激不尽! 展开
4个回答
展开全部
最好是在C中调用MATLAB ,因为C 比MATLAB灵活,MATLAB语言很强大,但是它是在处理数据方面的性能很好。可是它在开发平台上有一定局限性,用外部语言来调用MATLAB,正好弥补了这一不足。
建议用VC 6.0 做 ,操作比较简单
Matlab 是数值计算及图形处理软件,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理等若干领域的计算和图形显示功能。其中,控制系统工具箱的集成为设计和分析各种复杂的控制系统提供了有效的方法和途径。
但是,由于Matlab开发平台的局限性,在其上面开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,现将二者结合共用,各献其长,可以为科研工作和工程开发提供了更为强大的技术支持。
1、Matlab与VC混合编程的实现方法
Matlab作为控制系统设计的一种通用工具,它可以和VC方便的进行连接。一般而言,Matlab与VC混合编程的实现方法主要有以下三种方法:(1)通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab进行连接。具体应用时,往往在VC中设计程序框架,以编译的程序作为前端客户机;通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信(2)应用Matlab数学函数库,Matlab中包含了内容丰富的函数库,而且还提供了与VC的数学函数接口,用户可以方便的在VC的IDE(集成开发环境)中调用。(3)通过DLL实现VC与Matlab的混合编程。DLL是一个可执行的二进制文件。把很多通用的功能放在DLL中,可以供多个应用程序调用,这样可以很好的减少外部存储空间的占有量,并实现代码的共享[2]。在上述三种方法中,第一种方法对调用Matlab的工具箱很实用,所有在进行控制系统的设计和分析时,一般都是通过调用Matlab引擎(Engine)来实现的。
要想在VC集成环境下利用Matlab引擎实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:
(1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for下拉列表中选择Include Files,添加路径:D:\Matlab6p5\extern\include(在Matlab的安装路径下);再选择下拉列表中的 Library Files,添加路径:D:\Matlab6p5\extern\ lib\win32\Microsoft\msvc60(在Matlab的安装路径下)。编译环境只需设置一次。
(2)添加库文件: 通过菜单 Projects|settings,进入 Link 页面,在 Object/Library Modules 框中,添加库文件名:libmx.lib 、libmat.lib 、libeng.lib。每个新的工程文件都要单独添加库文件。
(3)在使用 engine 函数的程序头文件中包含如下两个头文件:
#include "engine.h"
#include <stdlib.h>
(4)在应用程序中添加调用Matlab引擎的程序代码:
{
Engine *ep;
if(!(ep=engOpen(" \0"))) //打开Matlab引擎,建立与本地Matlab的连接
{
fprintf(stderr,"\n Can't start MATLAB engine\n");
exit(-1);
}
以上步骤是对VC与Matlab混合编程的编译环境进行设置,在完成了以上基本步骤后就可以利用Matlab引擎库函数engEvalString来调用Matlab的内建函数了。
记得在C程序中加上头文件#include "matlab.h" 。
建议用VC 6.0 做 ,操作比较简单
Matlab 是数值计算及图形处理软件,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理等若干领域的计算和图形显示功能。其中,控制系统工具箱的集成为设计和分析各种复杂的控制系统提供了有效的方法和途径。
但是,由于Matlab开发平台的局限性,在其上面开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,现将二者结合共用,各献其长,可以为科研工作和工程开发提供了更为强大的技术支持。
1、Matlab与VC混合编程的实现方法
Matlab作为控制系统设计的一种通用工具,它可以和VC方便的进行连接。一般而言,Matlab与VC混合编程的实现方法主要有以下三种方法:(1)通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab进行连接。具体应用时,往往在VC中设计程序框架,以编译的程序作为前端客户机;通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信(2)应用Matlab数学函数库,Matlab中包含了内容丰富的函数库,而且还提供了与VC的数学函数接口,用户可以方便的在VC的IDE(集成开发环境)中调用。(3)通过DLL实现VC与Matlab的混合编程。DLL是一个可执行的二进制文件。把很多通用的功能放在DLL中,可以供多个应用程序调用,这样可以很好的减少外部存储空间的占有量,并实现代码的共享[2]。在上述三种方法中,第一种方法对调用Matlab的工具箱很实用,所有在进行控制系统的设计和分析时,一般都是通过调用Matlab引擎(Engine)来实现的。
要想在VC集成环境下利用Matlab引擎实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:
(1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for下拉列表中选择Include Files,添加路径:D:\Matlab6p5\extern\include(在Matlab的安装路径下);再选择下拉列表中的 Library Files,添加路径:D:\Matlab6p5\extern\ lib\win32\Microsoft\msvc60(在Matlab的安装路径下)。编译环境只需设置一次。
(2)添加库文件: 通过菜单 Projects|settings,进入 Link 页面,在 Object/Library Modules 框中,添加库文件名:libmx.lib 、libmat.lib 、libeng.lib。每个新的工程文件都要单独添加库文件。
(3)在使用 engine 函数的程序头文件中包含如下两个头文件:
#include "engine.h"
#include <stdlib.h>
(4)在应用程序中添加调用Matlab引擎的程序代码:
{
Engine *ep;
if(!(ep=engOpen(" \0"))) //打开Matlab引擎,建立与本地Matlab的连接
{
fprintf(stderr,"\n Can't start MATLAB engine\n");
exit(-1);
}
以上步骤是对VC与Matlab混合编程的编译环境进行设置,在完成了以上基本步骤后就可以利用Matlab引擎库函数engEvalString来调用Matlab的内建函数了。
记得在C程序中加上头文件#include "matlab.h" 。
展开全部
其实谁调谁都很简单,主要是看你用来干什么。根据你说的“matlab主要是进行图像处理工作,C进行发音”,我觉得C掉用Matlab比较好实现,这里有两种调法,一个是engine,另外一个是调用函数库。engine比较简单,直接通过指令将Matlab后台运行,并把Matlab指令用C输给Matlab,并读取返回值就行。但是需要计算机安装完整的Matlab和相应的模块。调用函数库麻烦一点(不会麻烦很多),但是计算机只要安装一个一百多兆的Matlab运行库就行。详细的还是需要根据帮助step by step,希望能帮助你。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个同问 我也遇到了此类问题,经过对比 matlab调用C好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询