用VC做一个界面,从这个界面输入数据,将这些数据传给Matlab 让Matlab在后台运行,然后将计算结果返回到VC
具体使用什么方法要怎么做VC输入数据及设定的参数用MATLAB编程进行计算将计算的结果再在VC上显示出来VC的界面如何输入和显示能具体一些吗谢谢...
具体使用什么方法 要怎么做
VC输入数据 及设定的参数
用MATLAB 编程 进行计算
将计算的结果再在VC上显示出来
VC的界面 如何输入和显示 能具体一些吗 谢谢 展开
VC输入数据 及设定的参数
用MATLAB 编程 进行计算
将计算的结果再在VC上显示出来
VC的界面 如何输入和显示 能具体一些吗 谢谢 展开
3个回答
展开全部
用engine的方法,,其他的几种方法比较局限,,,我就是这么做的,,
这几天正在写这方面的论文,,这是其中的几句关键
每个函数的具体用法如下:
1、GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); 将ID为IDC_EDIT1的编辑框控件里的输入转化为数组ch1[10];
2、GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);将数组ch3的元素组成的数据显示在ID为IDC_EDIT3的编辑框里;
3、memcpy((char *) mxGetPr(M),(char *) A,2*sizeof(double));将vc中的数组A放入内存中赋给M(M初始化为M = mxCreateDoubleMatrix(m, n, mxREAL);即内存中的m×n的数组)
4、engPutVariable(ep,"z",M);将内存中的M读取进入matlab的workspace赋给Z;
5、M=engGetVariable(ep,"x"); 将matlab中workspace中的数组X传给内存中的M;
6、memcpy((char *) A,(char *) mxGetPr(M),2*sizeof(double));将内存中的数组M传给vc中的数组A;
这几天正在写这方面的论文,,这是其中的几句关键
每个函数的具体用法如下:
1、GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); 将ID为IDC_EDIT1的编辑框控件里的输入转化为数组ch1[10];
2、GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);将数组ch3的元素组成的数据显示在ID为IDC_EDIT3的编辑框里;
3、memcpy((char *) mxGetPr(M),(char *) A,2*sizeof(double));将vc中的数组A放入内存中赋给M(M初始化为M = mxCreateDoubleMatrix(m, n, mxREAL);即内存中的m×n的数组)
4、engPutVariable(ep,"z",M);将内存中的M读取进入matlab的workspace赋给Z;
5、M=engGetVariable(ep,"x"); 将matlab中workspace中的数组X传给内存中的M;
6、memcpy((char *) A,(char *) mxGetPr(M),2*sizeof(double));将内存中的数组M传给vc中的数组A;
追问
vc MFC调用matlab函数能不能脱离matlab运行
追答
这个调用engine的方法不能,但是正是这样也使得这个方法更加的全面些,本身各种运算方法就是根据不同的输入而实时变化的,如果脱离的话,可能会有些局限性吧!
展开全部
#include "engine.h"
//从VC界面获取参数值 如:a b c d ...
//在此举个简单的例子,从VC界面取得a,b两个数,利用matlab算 a+b
Engine *ep;
ep = engOpen(NULL);//开启matlab计算引擎
//----------------------------------------------
//构造matlab程序
char m[255] = {0};
sprintf(m, "a = %f; b = %f; c = a + b;", a, b);
//执行上面的matlab程序
engEvalString(ep, m);
//获取计算结果
mxArray *c = engGetVariable(ep, "c");
double *p = mxGetPr(c);//p[0]即为a+b的结果
将p[0]的值显示在VC界面上。
mxDestroyArray(c);//释放内存
//----------------------------------------------
engClose(ep);//关闭matlab引擎
//----------------------------------------------
//注:额外需要的matlab头文件、库文件自行查找
//从VC界面获取参数值 如:a b c d ...
//在此举个简单的例子,从VC界面取得a,b两个数,利用matlab算 a+b
Engine *ep;
ep = engOpen(NULL);//开启matlab计算引擎
//----------------------------------------------
//构造matlab程序
char m[255] = {0};
sprintf(m, "a = %f; b = %f; c = a + b;", a, b);
//执行上面的matlab程序
engEvalString(ep, m);
//获取计算结果
mxArray *c = engGetVariable(ep, "c");
double *p = mxGetPr(c);//p[0]即为a+b的结果
将p[0]的值显示在VC界面上。
mxDestroyArray(c);//释放内存
//----------------------------------------------
engClose(ep);//关闭matlab引擎
//----------------------------------------------
//注:额外需要的matlab头文件、库文件自行查找
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
等于是VC调用MAtlab,这样效果不是很好,最好的是用Matlab生成dll文件,然后给VC调用,这样效率最高,你可以搜一下,VC与Matlab混合编程,很多教程的,大概有三四种方法
追问
可以具体些嘛 谢谢。。
追答
http://www.yesky.com/157/1860657.shtml
太多了,你在百度里面搜VC与Matlab混合编程一大堆
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询