MATLAB 与 Excel 接口
MATLAB 与 Excel 有两种接口方式:一种是通过 MATLAB 提供的 Excel 生成器,生成
220 MATLAB 实用教程
DLL 组件和 VBA 代码,实现 Excel 对 MATLAB 的调用;另一种是利用 MATLAB 提供的 Excel
link 插件,直接在 Excel 环境下运行 MATLAB 命令,完成与 MATLAB 的数据传输。下面介
绍的是第二种接口方式——Excel link。
Excel Link 是 Microsoft Windows 环境下实现 MATLAB 和 Microsoft Excel 进行链接的插
件。通过 MATLAB 与 Excel 链接,用户可以在 Excel 工作环境中利用宏工具及 MATLAB 数
据处理和图形处理功能进行相关操作,由 Excel link 进行 MATLAB 和 Excel 工作环境中的数
据交换和同步更新。使用 Excel link 时,不必脱离 Excel 环境,可直接在 Excel 工作区或宏操
作中调用 MATLAB 函数。
11.2.1 Excel link 的安装和操作
1.系统需求
Excel link 需要的操作系统是 Microsoft Windows XP、Microsoft Windows NT 或 Microsoft
Windows 2000,另外还需要 5.1 以上版本的 MATLAB 和 Excel 98、Excel 2000 或 Excel 2002。
2.Excel 中注册 Excel link
系统需要在 Windows 环境下先安装 Excel,然后再安装 MATLAB 和 Excel link。安装 Excel
link,在 MATLAB 安装组件选择框中选中 Excel link 即可,安装完毕后必须在 Excel 中进行
相应设置,具体操作过程如下。
Þ 启动Excel。
Þ 在【工具】菜单中选择【加载宏】选项,打开【加载宏】对话框,单击【浏览】。
Þ 在弹出的路径选择对话框中,选择“<matlabroot>\toolbox\exlink”下的Excel插件
“excllink.xla”,单击【确定】按钮。
Þ 返回【加载宏】对话框,单击【确定】按钮,弹出MATLAB运行窗口。
Þ 稍后,Excel Link工具条在Excel工作窗口左上角出现。工具条包括 “startmatlab”,
“putmatrix”,“getmatrix”和“evalstring”4 个工具按钮(见图 11-2),分别为启动
MATLAB、将数据传给MATLAB、从MATLAB提取数据和执行MATLAB命令。

图 11-2 Excel Link 工具条
3.启动 Excel Link
启动 Excel Link 分自动启动和手动启动两种方式。
(1)自动启动
安装和注册 Excel Link 之后启动 Excel 时,将自动启动 MATLAB 和 Excel Link。
如果用户不想在打开 Excel 时同时启动 MATLAB 和 Excel Link,可在 Excel 数据表单元
第 11 章 编译器与外部接口 221
格中输入=“MLAutoStart(“no”)”后按 Enter 键,如图 11-3 所示,此函数将更改初始化文件,
再次启动该文件时 MATLAB 和 Excel Link 不再自动启动。

图 11-3 A1 单元中输入“=MLAutoStart("no")”
(2)手动启动
Þ 单击【工具】菜单,选择【宏】。
Þ 在弹出 【宏】对话框的【宏名】文本框中输入“matlabinit”,单击【执行】按钮即可。
4.终止 Excel Link
终止 Excel 时,Excel Link 和 MATLAB 将同时终止。要在 Excel 中终止 MATLAB 和 Excel
Link 的运行,可在 Excel 数据表单元格中输入“=MLClose()”并按 Enter 键。重新启动时,
可在 Excel 数据表单元格中输入“=MLOpen()”后按 Enter 键或在【宏名】文本框中输入
“matlabinit”手动启动。
11.2.2 Excel link 的函数
Excel Link 提供了一系列管理链接、操作数据的函数,可在 Excel 环境中通过宏或工作表
单元公式调用这些函数,实现 Excel Link 和 MATLAB 的数据交换与同步更新。
1.链接管理函数
Excel Link 提供了四个链接管理函数来初始化、启动、终止 Excel Link 和 MATLAB。
Matlabinit:初始化 Excel Link 并启动 MATLAB 进程。
MLAutoStart:自动启动 MATLAB 进程。
MLClose:终止 MATLAB 进程。
MLOpen:启动 MATLAB 进程。
可在 Excel 的【工具】菜单中单击【宏】选项或在宏过程中调用 matlabinit 函数,其他链
接管理函数可用宏或工作表单元公式进行调用。
2.数据管理函数
Excel Link 提供了 9 个数据管理函数在 Excel 和 MATLAB 之间复制数据、在 Excel 中运
行 MATLAB 命令。
Matlabfcn:对给定 Excel 数据运行 MATLAB 命令。
Matlabsub:对给定 Excel 数据运行 MATLAB 命令并指定输出位置。
MLAppendMatrix:将 Excel 工作表中数据创建或添加到 MATLAB 矩阵。
MLDeleteMatrix:删除 MATLAB 矩阵。
222 MATLAB 实用教程
MLEvalString:运行 MATLAB 命令。
MLGetMatrix:将 MATLAB 矩阵内容写到 Excel 工作表中。
MLGetVar:将 MATLAB 矩阵内容写到 Excel VBA 变量中。
MLPutMatrix:用 Excel 工作表中数据创建或覆盖 MATLAB 矩阵。
MLPutVar:用 Excel VBA 变量数据创建或覆盖 MATLAB 矩阵。
MLGetVar 和 MLPutVar 只能在宏中调用,其他函数可通过宏或工作表单元公式调用。
3.Excel link 实例
下面通过工作表对一组数据进行曲线拟合,说明 Excel link 的使用方法。
创建 Excel_example.xls 文件,如图 11-4 所示,DATA 下的第一列、第二列分别为数值 X
和 Y。

图 11-4 创建 Excel_example.xls 文件
选择单元 E4,按 F2 键,回车执行 Excel link 函数 MLPutMatrix("x",A4:A15),它将 A4:A15
发送到 MATLAB 并给变量数组 x 赋值。对 E5 进行类似操作,将框中第二列数据赋值给 y。
对 E9、E10 执行类似操作,依次执行下列语句:
MLEvalString("p=polyfit(x',y',3)")
MLEvalString("newfit = polyval(p,x)")
这两条语句是MATLAB中执行双引号中命令,对数据点用y=ax3+bx2+cx+d进行曲线拟合。
在 E11 中执行命令:
MLEvalString("a=p(1);b=p(2);c=p(3);d=p(4)")
该语句是 MATLAB 中将拟合系数分别给 a、b、c、d 赋值。
在 E14、E15、E16、E17 中分别执行命令:
MLGetMatrix("a","E21")
MLGetMatrix("b","F21")
MLGetMatrix("c","G21")
MLGetMatrix("d","H21")
第 11 章 编译器与外部接口 223
这 4 条语句分别是 MATLAB 中将 a、b、c、d 传给 Excel 中单元格 E21、F21、G21、H21。
在 E18 中执行命令:
MLEvalString("plot(x,newfit,'-' ,x,y,'o')")
该语句利用 MATLAB 绘图函数显示原始数据和拟合曲线,结果如图 11-5 所示。

图 11-5 Excel Link 的运算结果

MATLAB 与 Excel 接口的更多相关文章

  1. matlab读取excel文件中的数据

    1.读取sheet1中的所有数据 1.1首先我们建立一个sheet表,表名为‘111’ 1.2 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤), 选入当前工作 ...

  2. ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录

    已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...

  3. python+requests+excel 接口自动化框架

    一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...

  4. Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决

    1.问题描述: 该错误通常发生在应用函数读取excel文件(后缀xls或xlsx)时. 应用xlsread函数读取提示服务器出现意外情况: 应用importdata读取时提示can‘t open fi ...

  5. Requests+Excel接口自动化测试(Python)

    一.框架结构:  工程目录 二.Case文件设计 三.基础包 base 3.1 封装get/post请求(runmethon.py) import requests import json class ...

  6. matlab写入excel数据

    使用xlswrite 可以help xlswrite查看用法 xlswrite(filename,A)xlswrite(filename,A,sheet)xlswrite(filename,A,xlR ...

  7. SoapUI+excel接口自动化测试简述

    1.自动化测试工具介绍 由于系统前后端分离,所以接口测试势在必行,在接触了几天接口测试框架,包括postman.httpclient.loadrunner.soapUI等,下面具体讲讲最终决定使用so ...

  8. (转)Java + Excel 接口自动化

    最近项目比较悠闲,想找点事干,写了个 Excel 接口测试的 "框架" 以前用 python 写过一个,这次用 java, 应该说框架都不算,反正就是写了,能帮我解决问题就行. 当 ...

  9. Java + Excel 接口自动化

    最近项目比较悠闲,想找点事干,写了个 Excel 接口测试的 "框架" 以前用 python 写过一个,这次用 java, 应该说框架都不算,反正就是写了,能帮我解决问题就行. 当 ...

随机推荐

  1. 走正确的路 - IT业没有护城河 - 机器翻译新锐Deepl

    最近发生了一件很令我震惊的事情:新的一个机器翻译网站出现了 - www.deepl.com (DeepL 或许会成为你今年首选的翻译工具) 机器翻译早就是红海市场了.我就不从1954年IBM发布俄翻英 ...

  2. springMVC入门(一)------springMVC基本概念与安装

    springMVC简介 springMVC是一个基于MVC的web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. springMVC安装 本例中使用 ...

  3. ping通网关 ping不通dns

    一.Request Timed Out 当Ping指定的对象时,出现“Request Timed Out”提示信息的频率非常高,这说明对方无法接受发送过来的数据.当然这种情况下,很可能就是网络出现了故 ...

  4. 【从零开始撸一个App】PKCE

    一个成功的App背后肯定有一堆后端服务提供支撑,认证授权服务(Authentication and Authorization Service,以下称AAS)就是其中之一,它是约束App.保障资源安全 ...

  5. 力扣Leetcode 3. 无重复字符的最长子串

    无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ...

  6. Flink从入门到入土(详细教程)

    和其他所有的计算框架一样,flink也有一些基础的开发步骤以及基础,核心的API,从开发步骤的角度来讲,主要分为四大部分 1.Environment Flink Job在提交执行计算时,需要首先建立和 ...

  7. Python数据可视化之Excel气泡图

    最终实现的效果如图: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类 ...

  8. 5000字 | 24张图带你彻底理解Java中的21种锁

    本篇主要内容如下: 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synch ...

  9. 【Android】listview 嵌套gridview报错,代码:”during second layout pass: posting in next frame

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 公众号:程序员小冰 说明:本人曾经在listview嵌套gridview出现 ...

  10. 轮廓线DP

    轮廓线DP ​ 刚刚学了轮廓线DP,想了好久才懂. ​ 我的理解就是用一条线的状态去更新另一条线的状态,然后将格子填满. ​ 图中正方形即是要填东西(根据题意)的格子,红线的状态是由黑线转移过来的. ...