24小时热门版块排行榜    

查看: 2368  |  回复: 8
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sudo

木虫 (正式写手)

【答案】应助回帖

★ ★
微尘、梦想(金币+2, 程序强帖+1): 2011-05-06 19:46:24
zcyay(金币+1): 2011-10-11 15:36:50
引用回帖:
Originally posted by zcyay at 2011-05-05 22:24:44:
#include <iostream>
#include <math.h>
#include "engine.h" //添加MATLAB引擎头文件
#include <string.h>
using namespace std;

int main()
{
        //定义x,y数组并赋初值
         ...

测试了一下,确实添加libmx.lib;libeng.lib;libmex.lib;三个库就够了

测试的代码也是你给的那个,结果是显示一个曲线

环境是VS2010+MATLAB2010a

(编译过程遇到一个问题,是MATLAB2010a的一个头文件的小BUG,估计跟楼主的问题无关,修改之后就OK了)

可能是你的库没有添加正确~看你的报错,属于链接期错误...

另外代码贴在【code】【/code】框里会比较好看,把前面中文的中括号换成英文的...
CODE:
#include
#include
#include "engine.h" //添加MATLAB引擎头文件
#include
using namespace std;

int main()
{
        //定义x,y数组并赋初值
        const int N=20;
        double x[N],y[N];
        for (int i=0;i         {
                x[i]=i+1;
                y[i]=x[i]*x[i];

        }
        Engine *ep;     //定义MATLAB引擎指针变量
        if(!(ep=engOpen(NULL))) //打开MATLAB引擎
        {
                cout<<"can't start MATLAB engine!"<                 exit(1);
        }
        //利用MATLAB API mxCreateDoubleMatrix函数生成矩阵,即申请空间,MATLAB引擎中使用mxArray类型数据

        mxArray *xx=mxCreateDoubleMatrix(1,N,mxREAL);//1行N列,mxREAL为实双精度矩阵
        mxArray *yy=mxCreateDoubleMatrix(1,N,mxREAL);
        //mxGetPr获取指向输入、输出矩阵数据的指针
        memcpy(mxGetPr(xx),x,N*sizeof(double));//将数组 x 复制到 mxarray 数组 xx 中,即给xx数组赋值
        memcpy(mxGetPr(yy),y,N*sizeof(double));


        engPutVariable(ep,"xx",xx);//将 mxArray 数组 xx 写入到 Matlab 工作空间,命名为 xx
        engPutVariable(ep,"yy",yy);

        engEvalString(ep,"plot(xx,yy)");//通过引擎调用MATLAB中plot(x,y)函数,绘制函数曲线
        mxDestroyArray(xx); //释放内存
        mxDestroyArray(yy);//释放内存

        cout<<"press any key to exit!"<         cin.get();
        engClose(ep);
        return 0;
}

7楼2011-05-06 09:23:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 zcyay 的主题更新
信息提示
请填处理意见