matlab利用excellink达到在excel中直接画图
- 格式:doc
- 大小:793.50 KB
- 文档页数:37
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),在MATLAB中使用命令xlsread读取Excel中的数据到MATLAB里,如下所示:[number,txt,raw]=xlsread(''),此时读取的文件须在MATLAB默认路径下,命令具体用法及参数含义可直接用help命令在MATLAB中查找。
读取的数据界面如下:
1.如何将Excel中的数据导入MATLAB并在MATLAB中画出图像?
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),file-Import Data-在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish-导入成功-在workspace中看到图5(导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:
法一:双击workspace中的data打开如图6,选中要画图的数据如图7(数据范围可以根据需要随便选择),点击上方的plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
图3
图4
图5图6图7图8。
1.如何将Excel中的数据在MATLAB界面下显示出来:
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),在MATLAB中使用命令xlsread读取Excel中的数据到MATLAB里,如下所示:[number,txt,raw]=xlsread('noise.xlsx'),此
时读取的文件须在MATLAB默认路径下,命令具体用法及参数含
义可直接用help命令在MATLAB中查找。
读取的数据界面如下:
2.如何将Excel中的数据导入MATLAB并在MATLAB中画出图像?
首先Excel必须是office的(WPS的不可以,MATLAB不能识
别),file-Import Data-在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish-导入成功-在workspace中看到图5(导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:
法一:双击workspace中的data打开如图6,选中要画图的数据如图7(数据范围可以根据需要随便选择),点击上方的
plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
图3
图4
图5
图6
图7
图8。
1.如何将Excel中的数据在MATLAB界面下显示出来:
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),在MATLAB中使用命令xlsread读取Excel中的数据到MATLAB里,如下所示:[number,txt,raw]=xlsread('noise.xlsx'),此时读取的文件须在MATLAB默认路径下,命令具体用法及参数含义可直接用help命令在MATLAB中查找。
读取的数据界面如下:
2.如何将Excel中的数据导入MATLAB并在MATLAB中画出图像?
首先Excel必须是office的(WPS的不可以,MATLAB不能识别),file-Import Data-在工作路径下找到需要导入的文件(图3)-点击打开
(图4)-点击next-点击finish-导入成功-在workspace中看到图5(导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:法一:双击workspace中的data打开如图6,选中要画图的数据如图7(数据范围可以根据需要随便选择),点击上方的plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
图3
图4
图5
图6
图7
图8。
1. 如何将Excel中的数据在MATLA界面下显示出来:首先Excel必须是office 的(WPS勺不可以,MATLA不能识别),在MATLA中使用命令xlsread读取Excel中的数据到MATLA里,如下所示:[number,txt,raw]=xlsread('noise.xlsx'),此时读取的文件须在MATLA默认路径下,命令具体用法及参数含义可直接用help 命令在MATLA中查找。
读取的数据界面如下:[0.2i60][0.24SO][0.2500][0.2520][0.2540][0.2560][0.2580][0.25Q0][0.2620][0. 2640][0. 2660][0.2680][0.2700][0.2720][0.2740][0. 2760][23.6000][ 28][30.4000]125-2000][ 18][19.2000][2L 2000][17. 20Q0][16.SOOO][17.6000][13.6000][11.2000][13.6000][13.2000][ 10][12.4000]2. 如何将Excel中的数据导入MATLA并在MATLA中画出图像?首先Excel必须是office 的(WPS勺不可以,MATLA不能识别),file-Import Data- 在工作路径下找到需要导入的文件(图3)-点击打开(图4)-点击next-点击finish- 导入成功-在workspace中看到图5 (导入的数据)。
至此数据导入成功。
下面是如何利用该数据绘图:法一:双击workspace中的data打开如图6,选中要画图的数据如图7 (数据范围可以根据需要随便选择),点击上方的plot(data(1:874,1:2),画出图像如图8,并且在工作空间中自动显示画图命令。
法二:直接在工作空间中写画图命令。
>> [number, txt raw!=zlsr*ad C noise.xlsz J)riunber 二0.246023. 60000.24SC 2& 00000.2500 30. 40000. 2520 25.20000. 2E40 18. 00000.2560 2000Di 2580 21. 20000.2600 17.20000. 2620 16.30000. 2640 17. 60000. 13. 60000* 26SA 1],20000. 2700 13. SQ00Import Data査找范圉(X):库计算机网貉名称'悸改日期,,noise.rriat2014/3/1S 19:181^gnoisenKlsx2014/3/1& 19:01I HKTIAB ▼> ®文件名曲):iriOL XISX文件类型⑴;Recognized Filww取消 |JJWorkspace圄■鱼1鲂I^Lr Select data ...〒Name *田[甌Value<874x2 double* rrrCommand Window■+* □ ? X>> plol (datadia?^ I. = 2), J DisplayMafte J p J dataCl;874? 1;2)a ? J YDataSource 1/ data(i:B74? 1:2^ ) .f igurt (ecf)九—K —图81 f 4New to MATLAB? Watch thi$ Sdg see 口旳口轧 or read Getting 5t^rt 亡cLNew Parallel D”ktq 因❼Ctirrent F file Edit 0ew Ins-ert lo&ls Desktop Window Help□ U 矗B |輿耳U 物穏摇TO □囲I ■口IXCommaHd Window。
Matlab具有强大的数据计算和处理、图形显示能力;Excel则具有强大的表格处理同时也有强大的数据统计和显示能力。
在科研过程中常会同时使用这两款软件,如果实现Matlab和Excel的链接,可以满足实际要求。
实现Matlab和Excel的混合编程主要有以下几种方法:1、利用Excel Link(最常用方法)Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。
通过连接Excel和Matlab,实现Excel和Matlab的数据共享。
使用Excel Link 时,不脱离Excel环境直接在Excel中调用Matlab函数。
具体可参见Matlab帮助或Excel Link手册。
2、利用Excel生成器(Matlab作COM服务器)COM(通用对象模型)是一组面向对象的技术和工具的集合。
利用Matlab提供的COM生成器,把Matlab的算法程序生成组件,这些组件可作为独立的COM对象被Excel的Visual Basic使用。
具体可参见Matlab COM Builder或者Matlab Builder for Excel工具。
3、利用Active X控制(Matlab作COM客户端)ActiveX是 Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型。
主要利用Matlab中的actxserver函数:actxserver('progid');progid为程序的ActiveX部件的标识符,针对不同的程序有不同的progid。
如actxserver('Excel.Application'),然后可利用invoke函数进行一系列操作。
4、文件导入方法利用xlsread和xlswrite函数读写Excel文件(也可用fopen、fread和fwrite函数),然后进行数据处理操作。
另外,还可以通过菜单File->Import data 方法。
专题十外部程序接口10.1 在Excel中使用MATLAB☐Spreadsheet Link程序☐将Excel表格中的数据导出到MATLAB工作空间中☐从MATLAB工作空间导入数据到Excel表格中☐在Excel中调用MATLAB函数进行运算1. Spreadsheet Link程序Spreadsheet Link程序是MATLAB提供的Excel与MATLAB的接口,通过Spreadsheet Link,可以在Excel工作区和MATLAB工作区之间进行数据交换,也可以在Excel中调用MATLAB的函数。
(1)安装Spreadsheet Link的安装是在MATLAB安装过程中,随其他组件一起安装的。
安装完成后,还需要在Excel中进行一些设置后才能使用。
(2)设置选 Excel “文件”菜单的“选项”菜单项,打开“Excel选项”对话框。
在“Excel选项”对话框中,选左边栏的“加载项”,然后单击右边面板下部的“转到”按钮,弹出“加载宏”对话框。
(2)设置在“加载宏”对话框中,单击“浏览”按钮,打开文件“浏览”对话框。
在文件“浏览”对话框,选MATLAB的安装文件夹的子文件夹toolbox\exlink。
在文件夹exlink中选excllink.xlam文件,单击“确定”按钮返回。
(2)设置“加载宏”对话框的“可用加载宏”列表中多了一个“Spreadsheet Link 3.2.5 for use with MATLAB and Excel”选项。
选中该项,返回Excel窗口。
(3)MATLAB命令组加载Spreadsheet Link 后,在Excel窗口“开始”选项卡中多了一个MATLAB命令组。
命令组中包含的一组命令项,分别用于实现启动MATLAB、导入和导出数据、调用MATLAB函数等。
2. 将Excel表格中的数据导出到MATLAB工作空间例1 文件“测试数据.xlsx”存储某门店销售数据,将其中的A~E列的数据导出MATLAB工作区,存入变量sale。
MATLAB与EXCEL混合编程在可选性曲线绘制中的应用殷战稳;舒豪【摘要】文章以EXCEL调用MATLAB编写程序及绘制可选性曲线为例,介绍了利用以EXCEL为平台,MATLAB为后台引擎,通过两者的接口函数,调用MATLAB强大的数据处理功能和绘图功能来实现绘制可选性曲线的目的.【期刊名称】《选煤技术》【年(卷),期】2012(000)004【总页数】4页(P91-94)【关键词】MATLAB;EXCEL;混合编程;可选性曲线【作者】殷战稳;舒豪【作者单位】河南城建学院电气与电子工程系,河南平顶山467036;中国煤炭科工集团北京华宇工程有限公司,北京100011【正文语种】中文【中图分类】TD948可选性曲线的绘制是选煤厂工程设计和日常生产管理中煤质资料分析及数据处理的重要环节,目前,已有专业软件处理此工作。
然而,由于不同软件、程序操作界面友好性的差异,有时应用起来比较麻烦,如单独使用EXCEL或MATLAB绘制可选性曲线时,不仅编程复杂且难以直观表达。
但EXCEL在处理数据方面比较简便,而MATLAB在绘图方面具有强大的功能,因此,将MATLAB和EXCEL混合编程可实现简便而直观地绘制可选性曲线的目的。
1 EXCEL、MATLAB混合编程准备工作下面以EXCEL2003和MATLAB 6.5为例,介绍混合编程过程。
首先要安装这两款软件,然后在EXCEL中实现MATLAB的调用。
操作如下:在EXCEL中点击工具栏选择加载宏后,添加MATLAB 6.5文件夹中exlink.xcl的路径 (例如:d:\\matlab\toolbox\exlink\excllink.xla),即可实现在EXCEL中调用MATLAB[1]。
EXCEL调用MATLAB成功后的界面显示见图1。
2 EXCEL调用MATLAB绘制可选性曲线以2009年兖州煤业集团济三煤矿选煤厂大直径无压给料三产品重介质旋流器Φ1400/1050单机检查结果为例,介绍绘制可选性曲线具体的编程方法。
本章主要介绍如何在excel平台下使用MA TLAB资源。
MA TLAB提供的Spreadsheet Link 将Microsoft Excel和MA TLAB完美结合,即在Excel表单中利用MA TLAB资源,包括科学计算和绘图功能。
其工作原理是:首先在Excel表单中创建命令,然后传递给MA TLAB后台处理,最后将后台处理结果回传到Excel表单中。
1、Spreadsheet Link的安装启动Microsoft Excel,选择工具菜单中的“加载宏”选项点击浏览按钮,选择MA TLAB路径下\toolbox\exlink子目录中的excllink.xla文件,然后点击“确定”按钮即可加载MA TLAB,可以看到Excel运行窗口增加了Spreadsheet Link的工具条,如图所示:2、Spreadsheet Link的启动和退出按照上述步骤安装Spreadsheet Link后,将在每次启动Excel时自动启动Spreadsheet Link和MA TLAB。
如果希望改变此种启动方式,可以在Excel表单单元中输入“=MLAutoStart("no")”语句,执行后则改变了设置。
当然如果希望恢复原设置,可以采用“=MLAutoStart("yes")”语句。
对于Spreadsheet Link和MA TLAB没有自动启动的情况,可以在Excel平台中手动启动。
首先在工具菜单中选择“宏”选项,打开“宏”对话框并输入“MA TLABinit”,单击“执行”按钮后即可启动Spreadsheet Link和MA TLAB。
当退出Excel时自动退出Spreadsheet Link和MA TLAB。
如果希望在Excel平台中退出Spreadsheet Link和MA TLAB,只需在表单单元中输入“=MLClose()”语句即可。
3、Spreadsheet Link的实际应用在Spreadsheet Link应用时,主要是实现Excel数据的读入、MA TLAB对数据的处理和显示以及将处理结果显示在Excel中。
matlab excel混合编程MATLAB与Excel数据连接及绘图3.1 MATLAB与Excel数据连接EXCEL和MATLAB在数据显示和数值计算上各有优势,EXCEL是商业运用最广泛的工具,非常直观,但是数值编程比较差,而MA TLAB可以弥补这一点,有时在程序开发上需要将两者结合起来,实现两者之间的优势互补,为此MATLAB提供了EXCEL Link连接工具,实现MA TLAB与EXCEL之间的混合编程。
EXCEL Link是一个在Microsoft Windows环境下实现对Microsoft EXCEL和MATLAB 进行链接的插件。
通过对EXCEL和MATLAB 的连接,用户可以在EXCEL的工作空间里,利用EXCEL的宏编程工具,使用MATLAB的数据处理和图形处理功能进行相关操作,同时由EXCEL Link来保证两个工作环境中数据的交换和同步更新。
使用EXCEL Link 时,不必脱离EXCEL环境,而是直接在EXCEL工作区或宏操作中调用MATLAB函数。
EXCEL Link允许在MATLAB和EXCEL之间进行数据交换,在两个功能强大的数学处理、分析与表示平台之间建立无缝连接。
EXCEL作为一个可视化的数据处理环境是进行数组编辑的最佳选择,而MA TLAB则作为数据分析和可视化的引擎。
任何输入到EXCEL环境中的数据都可以直接进入MTA TLAB进行处理,而这一过程完全是“现场”处理的,没有任何中间文件,也不需要进行编程工作。
3.1.1 MATLAB和Excel的接口安装:. Excel Link的安装和和设置首先,在系统中安装Excel软件。
然后安装Matlab和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,如下图所示:安装完Excel Link后还需要在Excel中进行一些设置后才能使用。
启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框:选中Excel Link项。
如果该项不存在,则通过浏览目录,在目录%MATLAB%toolboxexlink 下找到excllink.xla文件,如下图示,并确定。
选中ExcelLink项并确定后,在Excel中多了一个Excel Link工具条,如下图示:经过以上的设置后就可以开始使用Excel Link了。
其中4个按钮的意义分别如下:startmatlab %启动MATLABputmatrix %将变量输入到MATLABgetmatrix %把MA TLAB的变量输入到EXCELevalstring %执行MA TLAB命令注:Excel中的起始时间与MATLAB的起始时间相差693960天,用户需要将该数据加在MATLAB上,转换为MATLAB的数据。
3.1.2 . ExcelLink管理函数1、ExcelLink连接管理函数按如上设置好后,下次启动excel时会默认启动matlab,要不想在每次启动时都启动matlab,则可以在电子表格中或函数输入框中输入以下命令=MLAutoStart(“no”)这时要启动matlab需手动启动,有三种方法,一种是在excel电子表格中调用MLOpen函数,即输入命令=MLOpen()第二种方法是利用excel的宏工具,在宏对话框中输入Matlabinit,然后单击执行按钮,同样可以启动MATLAB。
第三种方法是按左上按钮"startmatlab"。
下面介绍一下常用的连接、启动和关闭matlab的常用函数:(1)Matlabinit该函数只能在宏子例程中使用。
初始化ExcelLink和启动Matlab进程。
只有在MLAutoStart 函数中使用“no”参数,才需要手动使用Matlabinit来初始化ExcelLink和启动Matlab进程,如果使用参数“yes”,则Matlabinit是自动执行的。
使用语法:Matlabinit(2) MLAutoStart设置自动启动Matlab和ExcelLink。
在工作表中的使用语法:MLAutoStart("yes") MLAutoStart("no")在宏中的使用语法:MLAutoStart "yes"MLAutoStart "no"使用“yes”参数,则当Excel启动时,自动启动Matlab和ExcelLink;如果使用参数“no”,则当Excel启动时,不启动Matlab和ExcelLink。
如果在此之前它们已经启动,则无任何影响。
(3) MLClose终止Matlab进程并删除Matlab工作空间的所有变量。
并通知Excel,Matlab不再运行。
在工作表中的使用语法:MLClose()在宏中的使用语法:MLClose(4) MLOpen启动Matlab进程。
如果Matlab进程已经启动,则MLOpen函数不进行任何操作。
在使用MLClose关闭Matlab进程后使用MLOpen来重新启动Matlab。
在工作表中的使用语法:MLOpen()在宏中的使用语法:MLOpen注释:EXCEL的默认日期数开始与1900年1月1日,而MATLAB 的日期数开始于0000年1月1日。
如果用户使用MATLAB中的日期数计算, 常数693960起关键作用: EXCEL 日期数加上它进入MATLAB,或从MATLAB 日期数中减去它进入EXCEL2. ExcelLink数据管理函数(1) Matlabfcn根据给定的Excel数据执行Matlab命令。
在工作表中使用时的语法: matlabfcn(command,inputs)参数command,Matlab将执行的命令,命令需要写成“command”(使用双引号引起来)的形式。
参数inputs 传给Matlab命令的变长输入参数列表。
列表是包含数据的工作表单元格范围。
函数返回单一数值或者是字符串,结果返回到调用函数的单元格中。
例如matlabfcn(”sum”,B1:B10);把从B1到B10的单元格中数据相加,如下图示:并将结果返回到当前的活动单元格。
即A11,结果如下图。
例:在Matlab中生成12维均匀随机向量aa,利用matlabfcn在Excel中求其分量之和。
(2) Matlabsub根据给定的Excel数据执行Matlab命令,并将结果返回到指定的单元格中。
在工作表中的使用语法:matlabsub(command,edat,inputs)command和inputs参数的与matlabfcn相同。
参数edat,指定返回值写入在工作表中的位置。
如果edat用双引号引起来,则edat必须是单元格地址或范围的名字。
如果参数不用引号引起edat的形式,则通过计算获得矩阵名。
例如:=matlabsub(”sum”,”A1”,B1:B10);把工作表中从单元格B1到B10的数据相加,并将结果返回到单元格A1中。
注意:edat指定的位置不能包含matlabsub所在的位置。
(3)MLAppendMatrix将Excel工作表中的数据追加到Matlab中指定的矩阵中如果该矩阵不存在,则创建矩阵。
在工作表中使用的语法:MLAppendMatrix(var_name,mdat)在宏中使用的语法:MLAppendMatrix var_name,mdat注意要追加的数据维数要和原矩阵中的维数相匹配,否则出错。
例如:MLAppendMatrix(”a”,A1:A2);假设矩阵a是个2行3列的矩阵,如下图:将A1:A2中的数据追加到矩阵后,如下图示成为矩阵的第四列,如下图示。
单元格B1中是字符a,函数MLAppendMatrix(B1,A1:A2)的作用于MLAppendMatrix(”a”,A1:A2)相同。
(4) MLDeleteMatrix删除Matlab空间中指定的矩阵在工作表中使用的语法:MLDeleteMatrix(var_name);在宏中使用的语法:MLDeleteMatrix var_nameVar_name,是要删除的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。
例如,单元格B1中的内容为a,MLDeleteMatrix(B1),则表示删除Matlab工作空间的矩阵a,它等价于MLDeleteMatrix(”a”)(5) MLEvalString将命令(写成字符串的形式)传到Matlab中执行。
在工作表中使用的语法:MLEvalString(command);在宏中使用的语法:MLEvalString command参数command如果是用引号引起来”command”的形式,则是直接指定命令;如果不用引号引起来command的形式,则command必须是包含了命令字符串的工作表的单元格地址或者是范围。
例如:MLEvalString(”b=magic(4)”);表示在Matlab中执行命令b=magic(4);(6) MLGetMatrix将指定的Matlab矩阵写入到Excel工作表中的指定位置。
在工作表中使用的语法:MLGetMatrix(var_name,edat)在宏中使用的语法:MLGetMatrix var_name,edat参数Var_name,是要写入工作表的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。
参数edat指定了矩阵写入工组表的位置。
如果参数是用引号引起”edat”的形式,则是直接指定矩阵名,如果参数不用引号引起edat的形式,则通过计算获得矩阵名。
例如:MLGetMatrix(”a”,”sheet1!B1”);将矩阵a写入工作表sheet1以单元格B1起始的位置,如果a是一个2行3列的矩阵,则矩阵占据sheet1的B1到D2的空间。
如果在A1中有字符串a,则MLGetMatrix(A1,” sheet1!C1”)的作用与MLGetMatrix(”a”,”sheet1!C1”)相同。
函数运行结果如图示。
(7) MLGetVar将MatLab矩阵传送给Excel VBA变量,只能在宏子例程中使用。
使用语法:MLGetVar ML_var_name,VBA_var_name参数ML_var_name是将获取的矩阵名。
如果矩阵名在引号内“ML_var_name”的形式,则直接指定变量名,如果ML_var_name不用引号引起来,则通过计算获得实际矩阵的名字。
参数VBA_var_name,将其Matlab矩阵数据传给的VBA变量名,不用引号将其引起来。