Matlab外部程序接口

中南大学慕课教程

10.1 在Excel中使用Matlab

10.1.1 Spreadsheet Link程序

在这里插入图片描述

  • 1 打开Excel,选择菜单栏“文件”选项,再选择“选项”里按下图先选加载项,再点击“转到”
    Matlab外部程序接口_第1张图片
    弹出加载宏对话框(注意未加载时无Spreadsheet Link)。单击“浏览”,找到安装Matlab的位置里“toolbox”文件夹中“exlink”文件中的excllink文件。
    Matlab外部程序接口_第2张图片
    加载完毕后,在Excel窗口会多出MATLAB命令组
    Matlab外部程序接口_第3张图片

10.1.2 将Excel表格中的数据导出到Matlab工作空间中

Matlab外部程序接口_第4张图片
即可将数据导入到Matlab中

10.1.3 从Matlab工作空间导入数据到Excel表格中

Matlab外部程序接口_第5张图片

10.1.4 在Excel中调用Matlab函数进行运算

在这里插入图片描述
Matlab外部程序接口_第6张图片
Matlab外部程序接口_第7张图片
Matlab外部程序接口_第8张图片
Matlab外部程序接口_第9张图片

10.2 Matlab文件操作

10.2.1 文件打开与关闭

Matlab外部程序接口_第10张图片
Matlab外部程序接口_第11张图片
Matlab外部程序接口_第12张图片

10.2.2 文本文件的读写

Matlab外部程序接口_第13张图片
Matlab外部程序接口_第14张图片
Matlab外部程序接口_第15张图片

10.2.3 二进制文件的读写

Matlab外部程序接口_第16张图片
Matlab外部程序接口_第17张图片

10.2.4 数据文件定位

Matlab外部程序接口_第18张图片
Matlab外部程序接口_第19张图片
Matlab外部程序接口_第20张图片

10.3 在其他语言程序中读写Matlab的数据文件

10.3.1 MAT文件的概念

Matlab外部程序接口_第21张图片

10.3.2 C++程序中MAT文件的基本操作

Matlab外部程序接口_第22张图片
Matlab外部程序接口_第23张图片
Matlab外部程序接口_第24张图片

10.3.3 mxArray对象

Matlab外部程序接口_第25张图片
Matlab外部程序接口_第26张图片
Matlab外部程序接口_第27张图片
Matlab外部程序接口_第28张图片
Matlab外部程序接口_第29张图片
Matlab外部程序接口_第30张图片
Matlab外部程序接口_第31张图片

10.3.4 生成应用程序并运行

Matlab外部程序接口_第32张图片

10.4 在Matlab中调用其他语言编写的程序

Matlab外部程序接口_第33张图片

10.4.1 MEX库函数

Matlab外部程序接口_第34张图片
Matlab外部程序接口_第35张图片
Matlab外部程序接口_第36张图片

10.4.2 MEX文件源程序的构成

Matlab外部程序接口_第37张图片
Matlab外部程序接口_第38张图片
Matlab外部程序接口_第39张图片
Matlab外部程序接口_第40张图片

10.4.3 MEX文件的编译

Matlab外部程序接口_第41张图片

10.5 在其他语言程序中调用Matlab函数

10.5.1 MATLAB引擎的概念

Matlab外部程序接口_第42张图片
Matlab外部程序接口_第43张图片

10.5.2 MATLAB引擎的使用

Matlab外部程序接口_第44张图片
Matlab外部程序接口_第45张图片
Matlab外部程序接口_第46张图片
Matlab外部程序接口_第47张图片
Matlab外部程序接口_第48张图片
Matlab外部程序接口_第49张图片

10.5.3 MATLAB引擎程序的编译与运行

Matlab外部程序接口_第50张图片

#include 
#include 
using namespace std;

int main()
{
    //定义一个engine类型的指针ep,用于操作引擎对象。
    Engine *ep; 
    //定义mxArray 类型的指针,用于指向所调用MATLAB函数的输入对象。
    mxArray *T = NULL, *R = NULL;
    //定义存储数据的变量,并按给定表达式生成数据。
    double t[180],r[180];
    double a,b;
    a=2;b=3;
    for (int i=0;i<180;i++)    {
        t[i]=i*0.1;
        r[i]=a+b*t[i]; }
    //启动MATLAB计算引擎
    //Windows系统中,engOpen函数的参数为空字符串,指定在本机启动计算引擎。  
    if (!(ep = engOpen("")))   {
        cout<< "\n不能启动MATLAB引擎\n";  
        return 0; 
        }
    //建立MATLAB变量,调用MATLAB函数
    T = mxCreateDoubleMatrix(1, 180, mxREAL);
    memcpy((void *)mxGetPr(T), (void *)t, sizeof(t));
    engPutVariable(ep, "T", T); 
    R = mxCreateDoubleMatrix(1, 180, mxREAL);
    memcpy((void *)mxGetPr(R), (void *)r, sizeof(r));
    engPutVariable(ep, "R", R); 
    engEvalString(ep, "polar(T,R);");
    engEvalString(ep, "title('阿基米德螺线');");    
    //释放内存空间,关闭计算引擎
    system("pause");
    mxDestroyArray(T);
    mxDestroyArray(R);
    engClose(ep);
    return 1; 
}

你可能感兴趣的:(Matlab笔记)