搜档网
当前位置:搜档网 › c语言与matlab联合编程求矩阵的逆

c语言与matlab联合编程求矩阵的逆

Microsoft Visual Studio 2005 与matlab2010a 联合编程

首先要配置好Microsoft Visual Studio 2005
1. Microsoft Visual Studio 2005 中配置编译器
要在VC中成功编译Matlab引擎程序,必须包含引擎头文件engine.h并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib。具体的说,打开一个工程后,做如下设置:
1) 通过菜单工具/选项,打开选项页,点击项目和解决方案,然后在页面右面“显示以下内容的目录”下拉列表框中选择“包含文件”,添加路径:C:\Program Files\MATLAB\R2010a\extern\include 。
2) 选择“库文件”,添加路径:C:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft 。
3) 菜单栏单击工程(项目)/属性,打开项目属性页,选择链接器/输入,在附加依赖项编辑框中,添加文件名libmx.lib libmat.lib libeng.lib。
以上步骤1)、2)只需设置一次,而步骤3)对每个项目都要单独设定。

2.如果编译成功,但执行时出现"无法找到libeng.dll"
需要在windows 系统下配置环境变量
找到libeng.dll在C:\Program Files\MATLAB\R2010a\bin\win32中
右键“我的电脑”->“属性”->“高级”->环境变量 找到Path路径 编辑
在字符串最后加上英文分号; 然后粘贴C:\Program Files\MATLAB\R2010a\bin\win32
重启电脑


以下是求矩阵逆的cpp文件
var.cpp
/*调用matlab求矩阵a的逆*/
/*使用前请配置好项目属性、工具选项、环境变量等*/
/*各种函数详细介绍请参见https://www.sodocs.net/doc/8d7245342.html,/column/program/vc/2011/0218/27617.html */
#include
#include
#include "engine.h"
using namespace std;
void main()
{
const int N=3;//三维数组
Engine *ep;
int i,j;
double a[N][N]={{2,0,0},{0,2,0},{0,0,2}},b[N][N];
mxArray *ctom=mxCreateDoubleMatrix(N,N,mxREAL);//c语言到matlab的传递矩阵,必须是mxArray类型
mxArray *mtoc=mxCreateDoubleMatrix(N,N,mxREAL);//matlab语言到c的传递矩阵,必须是mxArray类型
if(!(ep=engOpen(NULL)))
{
cout<<"MATLAB Engine can't open!\n"<}
else cout<<"MATLAB Engine is open!\n"<engSetVisible(ep,0);//0 表示设置MATLAB不可见,1表示可见

memcpy(mxGetPr(ctom),a,N*N*sizeof(double));
engPutVariable(ep,"Matrix",ctom);//将数组a传入matlab,需要通过ctom中转

engEvalString(ep,"Matrix=inv(Matrix)");//执行matlab指令,求矩阵的逆

mtoc=engGetVariable(ep,"Matrix");
memcpy(b,mxGetPr(mtoc),N*N*sizeof(double));//将矩阵的逆从matlab中传入数组b中

for(i=0;i{
for(j=0;jcout<cout<}

system("pause");
engClose(ep);
}







参考:
https://www.sodocs.net/doc/8d7245342.html,/%C0%D6%B5%C4%E3%B0%E2%EA/blog/item/c30974bbbde2991019d81fb7.html
https://www.sodocs.net/doc/8d7245342.html,/superql/blog/item/7ec2a6a12e2b53854610646f.html
各种函

数详细介绍:
https://www.sodocs.net/doc/8d7245342.html,/column/program/vc/2011/0218/27617.html


相关主题