VC++与MATLAB混合编程

VC++与Matlab混合编程

VC调用matlab函数计算复杂数学表达式具有很好的应用前景,在编写matlab程序时不需要处理变量的类型问题,而且支持矩阵运算及其它复杂运算,浮点运算精度高。VC的MFC框架支持可视化的人机交互界面,因此将VC与MATLAB混合编程可以充分发挥二者的优势。下面简单介绍混合编程的基本流程。

1.基本工具

matcom4.5,VC++6.0,Matlab7.0。

2.编程步骤

2.1.安装matcom4.5软件

VC++与MATLAB混合编程_第1张图片

2.2.matcom4.5中将Matlab函数文件导出生成CPP文件

Mm SumTest(Mm X1, Mm X0) 
{
    begin_scope
		X1.setname("X1"); X0.setname("X0"); 
    dMm(S); 
    call_stack_begin;
    // nargin, nargout entry code
    double old_nargin=nargin_val; if (!nargin_set) nargin_val=2.0;
    nargin_set=0;
    double old_nargout=nargout_val; if (!nargout_set) nargout_val=1.0;
    nargout_set=0;
    
    // translated code
	_   S = X1+X0;
    call_stack_end;
    
    // nargin, nargout exit code
    nargin_val=old_nargin; nargout_val=old_nargout;
    
    // function exit code
    X1.setname(NULL); X0.setname(NULL); 
    return S;
    end_scope
}

2.3.MFC添加头文件和库文件

1)MFC工程目录下拷贝相关文件:

VC++与MATLAB混合编程_第2张图片





2)StdAfx.h中添加:




2.4.调用函数

方法一:将CPP文件中的函数添加到成员函数


方法二:将CPP文件生成动态链接库外部调用


3.程序示例

void CVCMatlabDlg::OnButtonCall() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	//调用MATLAB函数
	initM(MATCOM_VERSION);
	Mm x1,x2,x3;
	x1=m_a;
	x2=m_b;
	x3=SumTest(x1,x2);
	m_sum=*(x3.pr);
	exitM();
	UpdateData(FALSE);
}


你可能感兴趣的:(MATLAB实现,C++程序设计)