vs2010调用matlab

新建一个win32应用程序。
环境配置
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

代码编写

// matlab.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "engine.h"

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


int main(int argc, _TCHAR* argv[])
{
    /*
    启用MATLAB计算引擎
    如果需要远程调用MATLAB计算引擎,将\0换做主机的名字
    */
    Engine *ep;
    if (!(ep = engOpen("\0")))
    {
        fprintf(stderr, "\nCan't start MATLAB engine\n");
        return EXIT_FAILURE;
    }

    int Nsample = 50;
    const double PI = 3.1415926;
    double *t = new double[Nsample] ;

    for(int i = 0; i < Nsample; i++)
    {
        t[i] = i * 2 * PI / Nsample;
    }

    /*
    创建数据变量
    */
    mxArray *T = NULL, *result = NULL;
    T = mxCreateDoubleMatrix(1, Nsample, mxREAL);
    memcpy((void *)mxGetPr(T), (void *)t, Nsample*sizeof(t[0]));

    /*
    将变量T输入MATLAB workspace
    */
    engPutVariable(ep, "T", T);

    /*
    绘制结果图
    */
    engEvalString(ep, "Y=sin(T);");
    engEvalString(ep, "plot(T,Y);");
    engEvalString(ep, "title('y=sin(t)');");
    engEvalString(ep, "xlabel('t');");
    engEvalString(ep, "ylabel('y');");

    /*
    使用fgetc()函数以确保暂停足够长时间,
    我们可以看到绘制的结果图
    */
    printf("Hit return to continue\n\n");
    fgetc(stdin);

    /*
    释放内存,关闭MATLAB引擎。
    */
    mxDestroyArray(T);
    engEvalString(ep, "close;");
    engClose(ep);

    return EXIT_SUCCESS;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值