Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-05-21, 20:22   #1
huangyinghua
初级会员
 
注册日期: 2009-05-08
帖子: 2
声望力: 0
huangyinghua 正向着好的方向发展
默认 如何从matlab工作空间中获取方程组的解

如果让matlab的计算结果输出到指定的buffer中,然后从这个buffer中获得方程组的解,这个可以实现;
但是从matlab工作空间中获取方程组的解就出问题了。大家运行我下面的原代码看看结果就知道了。
原代码如下:
#include <iostream>
#include <math.h>
#include "engine.h"
using namespace std;
void main()
{
mxArray *pResult;
char buffer[1001],*pStrCmond;
double dx1[6][1];
Engine *ep; //定义Matlab引擎指针。
if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
{
cout < <"Can't start Matlab engine!" < <endl;
exit(1);
}

//解方程组
cout < <"(1)解方程组 " < <endl;
engOutputBuffer(ep, buffer, 1000); //让计算引擎的计算结果同时输出到这个buffer

pStrCmond=" a=1.5;b=1.6;c=1.2;d=1.3";
engEvalString(ep, pStrCmond);
cout < <pStrCmond < <endl;
pStrCmond="f1='2*cos(x1)+2*cos(x1)*cos(x2)=1.5+1.6'";
engEvalString(ep, pStrCmond);
cout < <" " < <pStrCmond < <endl;
pStrCmond="f2='2*sin(x1)*sin(x2)=1.2+1.3'";
engEvalString(ep, pStrCmond);
cout < <" " < <pStrCmond < <endl;
pStrCmond="[x1,x2]=solve(f1,f2,'x1,x2')";
engEvalString(ep, pStrCmond);
cout < <" " < <pStrCmond < <endl;
//获取方程的解
//从buffer中获取解
cout < <"(2)打印buffer中存放的解x1、x2" < <endl;
cout < <buffer < <endl;

//直接从matlab工作空间中获取解x1
cout < <"(3)直接从matlab工作空间中获取解x1 " < <endl;
pResult=engGetVariable(ep,"x1");
//打印解x1的实部
cout < <" x1实部数据 " < <endl;//
memcpy( dx1,mxGetPr(pResult), 60*sizeof(double));
for (int i=0; i <6; i++)
{
cout < <dx1[i] < <endl;//打印的数据并不是解本身的数据??
}
//打印解x1的虚部
cout < <" x1虚部数据 " < <endl;//
memcpy( dx1,mxGetPi(pResult), 60*sizeof(double));
for ( i=0; i <6; i++)
{
cout < <dx1[i] < <endl;//打印的数据并不是解本身的数据??
}


//关闭Matlab引擎。
engClose(ep);


}
huangyinghua 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:26


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.