![]() |
如何从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); } |
所有时间均为北京时间。现在的时间是 11:11。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.