vc调用matlab引擎实时绘图,怎么在vc++里调用matlab绘制spline插值曲线

博客讲述了如何在VC++环境中使用MATLAB引擎进行数值插值并绘制曲线。作者遇到在调用spline函数后无法显示插值结果的问题,通过一系列MATLAB引擎的命令尝试解决,包括创建矩阵、设置变量、执行插值函数及绘图指令,最终成功绘制出插值后的B-H曲线,并设置了图表标题、坐标轴标签和网格线。
摘要由CSDN通过智能技术生成

我自己在vc++里调用matlab引擎可以使用plot绘制两个数组中的数值对应坐标连线。但是将这两个数组中数值进行插值(spline)就绘不出了。请各位高手帮帮忙,帮着写一下这个简单程序。就几句话,憋好久了。

Engine *ep;

MessageBox("请单击确定按钮,Windows正在准备启动MATLAB引擎!",

"Matlab 引擎",MB_OK|MB_ICONINFORMATION);

if(!(ep=engOpen(NULL)))

{

MessageBox("不能打开Matlab引擎,请检查是否安装Matalab及其路径设置正确与否!"

,"engine demo",MB_OK);

exit(-1);

}

engSetVisible(ep,1);

mxArray *xx=NULL;

mxArray *yy=NULL;

xx=mxCreateDoubleMatrix(1,num,mxREAL);

yy=mxCreateDoubleMatrix(1,num,mxREAL);

memcpy((void*)mxGetPr(xx),(void*)x,num*sizeof(double));

memcpy((void*)mxGetPr(yy),(void*)y,num*sizeof(double));

engPutVariable(ep,"xx",xx);

engPutVariable(ep,"yy",yy);

engEvalString(ep,"n=mxGetNumberOfElements(xx);");//10

engEvalString(ep,"t=1:n;");

engEvalString(ep,"ts=1:1/10:n;");

engEvalString(ep,"xs=spline(t,xx,ts);");

engEvalString(ep,"ys=spline(t,yy,ts);");

engEvalString(ep,"hold on");

engEvalString(ep,"plot(xs,ys,'r');");

engEvalString(ep,"hold off");

engEvalString(ep,"title('材料B-H曲线');");

engEvalString(ep,"xlabel('H(A/m)');");

engEvalString(ep,"ylabel('B(T)');");

engEvalString(ep,"grid on;");

mxDestroyArray(xx);

mxDestroyArray(yy);

//        engClose(ep);

delete []x;delete []y;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值