精通VC与MATLAB联合编程——编译器的使用,精通VC与MATLAB联合编程——编译器的使用
【 tulaoshi.com - C语言心得技巧 】
精通VC与MATLAB联合编程<八>——编译器的使用
作者:邓科
下载源代码
浅析VC与MATLAB联合编程<一
浅析VC与MATLAB联合编程<二
浅析VC与MATLAB联合编程<三
浅析VC与MATLAB联合编程<四
精通VC与MATLAB联合编程<五
精通VC与MATLAB联合编程<六
精通VC与MATLAB联合编程<七
在上一章中对MATLAB 编译器做了简要介绍,并介绍了如何将m文件转换成VC可调用的dll文件,在这章中介绍如何利用编译器将m文件转换成对应的CC++文件,并在VC中调用。这章节中的例子是在第四章中介绍过的解线形方程组。
首先要保证编译器设置正确,编译器的设置可以参考前面两章的内容。如果以前已经进行了配置就不需要这一步。
1、在MATLAB中编写如下函数:
function [x]=gjfcz(A,b)%A=[-1.5 1 2; 4 2 3 ; -3 2 8]%b=[3;5;6]x=Ab保存名为gjfcz.m,该函数的功能为求解线形方程组,可参考第四章的内容。
mcc –m gjfcz.m
该命令用来生成对应的C文件和可执行程序。在MATLAB工作目录下(一般是MATLABwork)将会生成如下文件:gjfcz.exe,gjfcz.c,gjfcz.h,gjfcz_main.c,其中gjfcz.c,gjfcz.h是我们需要的文件。
3、新建名为JXXFC基于对话框的工程,面板上添加一个按扭。
4、拷贝gjfcz.c,gjfcz.h两文件到工程目录下,并将文件引入工程(Project->Add to Project->Files)。
5、为按扭添加如下响应代码:
void CJXXFCDlg::OnButton1() { staticdouble Adata[]={-1.5,4,-3,1,2,2,2,3,8}; staticdouble bdata[]={3,5,6}; double Xdata[100]; mxArray *A = NULL;//赋初值 mxArray *b = NULL; mxArray *x = NULL; /* 使用自动内存管理*/ mlfEnterNewContext(0, 0); //创建矩阵 mlfAssign(&A, mlfDoubleMatrix(3, 3, Adata, NULL)); mlfAssign(&b, mlfDoubleMatrix(3, 1, bdata, NULL)); InitializeModule_gjfcz(); x=mlfGjfcz(A,b);//调用gjfcz.c中的函数求解 TerminateModule_gjfcz(); memcpy(Xdata,mxGetPr(x),3*sizeof(double)); // mxGetPr(x)用来得到x的地址 CString R; R.Format("%fn%fn%f",Xdata[0],Xdata[1],Xdata[2]); MessageBox(R); /* 释放矩阵所占的内存*/ mxDestroyArray(A); mxDestroyArray(b); mxDestroyArray(x); /* 禁用自动内存管理*/ mlfRestorePreviousContext(0, 0);}编译、连接,运行结果如图1:
来源:http://www.tulaoshi.com/n/20160129/1486080.html
看过《精通VC与MATLAB联合编程——编译器的使用》的人还看了以下文章 更多>>