本帖最后由 crazyyang1234 于 2009-08-31 20:41:57 编辑

解决方案 »

  1.   

    evalin#include <iostream>
    #include <math.h>
    #include "engine.h"
    using namespace std;
    void main()
    {
     const int N = 50;
     double x[N],y[N];
     int j = 1;
     for (int i=0; i<N; i++) //计算数组x和y
     {
      x[i] = (i+1);
      y[i] = sin(x[i]) + j * log(x[i]); //产生-之间的随机数赋给xx[i];
      j *= -1;
     }
     Engine *ep; //定义Matlab引擎指针。
     if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
     {
      cout <<"Can't start Matlab engine!" <<endl;
      exit(1);
     } //定义mxArray,为行,N列的实数数组。
     mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);
     mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上。 memcpy(mxGetPr(xx), x, N*sizeof(double)); //将数组x复制到mxarray数组xx中。
     memcpy(mxGetPr(yy), y, N*sizeof(double)); //将数组x复制到mxarray数组yy中。 engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
     engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。 //向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。
     engEvalString(ep, "plot(xx, yy); "); mxDestroyArray(xx); //销毁mxArray数组xx和yy。
     mxDestroyArray(yy); cout <<"Press any key to exit!" <<endl;
     cin.get();
     engClose(ep); //关闭Matlab引擎。
    }  编译并运行程序得结果入下图:
    y=sin(x) ±log(x)的图形
    一个参考
      

  2.   

    谢谢楼上的回答,我要用到矩阵的一些计算,所以不得不用MATLAB。虽然没有回答出来,还是谢谢你啊!