c语言的matlab调用,C语言如何调用MATLAB的surf函数

本帖最后由 空山新雨thw 于 2015-7-10 21:11 编辑

请教一下,在VS2013中怎样调用MATLAB中的surf函数?我已经成功调用了plot3和stem3函数,但是surf和mesh函数一直不成功,请大家帮我看看,谢谢!(可以确定,MATLAB引擎已经启动,但是函数没有调用成功)1.txt、2.txt、3.txt是程序所需的数据文件,程序中的xx,yy,tt以向量的方式分别存储了三个文件中的数据。

我的程序代码如下:

#include

#include

#include

#include

#include

#include "engine.h"

#pragma comment(lib, "libmx.lib")

#pragma comment(lib, "libmat.lib")

#pragma comment(lib, "libeng.lib")

using namespace std;

#define N 13000

int main()

{

FILE *fp1, *fp2, *fp3;

double S[N], C[N], T[N];

double x;

int i = 0, j = 0, k = 0;

Engine *ep;                //定义Matlab引擎指针

if (!(ep = engOpen(NULL))) //测试是否启动Matlab引擎成功

{

cout << "Can't start Matlab engine!" << endl;

exit(1);

}

if ((fp1 = fopen("1.txt", "r")) == NULL)

{

printf("1.txt打开失败!");

exit(0);

}

while (fscanf(fp1, "%lf", &x) != EOF)

{

S = x;

i++;

}

if ((fp2 = fopen("2.txt", "r")) == NULL)

{

printf("2.txt打开失败!");

exit(0);

}

while (fscanf(fp2, "%lf", &x) != EOF)

{

C[j] = x;

j++;

}

if ((fp3 = fopen("3.txt", "r")) == NULL)

{

printf("3.txt打开失败!");

exit(0);

}

while (fscanf(fp3, "%lf", &x) != EOF)

{

T[k] = x;

k++;

}

mxArray *xx = mxCreateDoubleMatrix(1, N, mxREAL);

mxArray *yy = mxCreateDoubleMatrix(1, N, mxREAL);//创建1行N列的实双精度矩阵

mxArray *tt = mxCreateDoubleMatrix(1, N, mxREAL);

memcpy(mxGetPr(xx), S, N*sizeof(double)); //将数组S复制到mxarray数组xx中

memcpy(mxGetPr(yy), C, N*sizeof(double)); //将数组C复制到mxarray数组yy中

memcpy(mxGetPr(tt), T, N*sizeof(double));

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

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

engPutVariable(ep, "tt", tt);

engEvalString(ep, "[X,Y,Z]=meshgrid(xx,yy,tt),surf(X,Y,Z),view(-37.5,30)");

mxDestroyArray(xx);         //销毁mxArray数组xx和yy

mxDestroyArray(yy);

mxDestroyArray(tt);

system("pause");

engClose(ep); //关闭Matlab引擎

}

a70cbf5f56cb187f20fb09bae08ed3de.gif

2015-7-10 21:01 上传

点击文件名下载附件

1.79 KB, 下载次数: 8

源代码

a70cbf5f56cb187f20fb09bae08ed3de.gif

2015-7-10 21:06 上传

点击文件名下载附件

107.9 KB, 下载次数: 7

程序所需的数据文件

a70cbf5f56cb187f20fb09bae08ed3de.gif

2015-7-10 21:06 上传

点击文件名下载附件

107.77 KB, 下载次数: 7

程序所需的数据文件

a70cbf5f56cb187f20fb09bae08ed3de.gif

2015-7-10 21:06 上传

点击文件名下载附件

115.04 KB, 下载次数: 7

程序所需的数据文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值