
潜刘方
摘要:再怎么样希望先看摘要,阅读本文需要一定的MATLAB基础知识,不需要excel相关知识。结合本人近期工作上的需要测量计算,想偷懒就选择了利用MATLAB偷懒,于是便有了本文。本文首先利用MATLAB读取数据,计算,将数据写入excel,然后花了很大的精力来根据实际需要画图,最后将图保存在excel所在的文件夹下。这个m文件可谓花了我不少的时间和精力。最后根据m文件的不足(不能将图形输入到excel文档当中),进一步弥补这不足,就有了exlink(也叫excel link),在网上搜索了相关的知识,发现很多关于exlink的培训,觉得实在可笑,所以就将exlink的使用写的比较详细,以供读者自行分析体会。
关键字:MATLAB excel exlink 接口
一、前沿
MATLAB是一款应用在各个领域的数学软件,最初叫做矩阵实验室,专用于矩阵的运算,后来的版本再各个领域都得到了很好的应用,比如:通信、电力电子、电机控制、运动控制、计算机控制、自动控制,DSP数字信号处理。但是MATLAB对于数据的处理与可视化是很多软件所不能及的。
EXCEL作为办公必备软件,能对简单数据分析计算与作图分析,但是处理复杂数据显得力不从心,比如三维作图就无法利用EXCEL作出;EXCEL本身的函数远远没有MATLAB多,MATLAB作为数据有其独特的优势,集成了很多数学函数,包括数据拟合差值等。MATLAB可以从EXCEL中读取数据,经过相关运算之后又可以将数据写入EXCEL,假如需要重复性的对excel可以利用MATLAB编写函数,每次只要运行MATLAB程序就可以完成,大大节省时间和精力。
另外,MATLAB还有与EXCEL的接口,叫做EXLINK,运用这个接口可以在excel中完成MATLAB函数的调用,还能传送数据给MATLAB,从MATLAB当中读取数据,从MATLAB当中读取图形,使用方便,操作简单。
二、基于MATLAB的数据分析
数据分析操作流程主要分为三步:第一步,从excel中读取数据;第二部:利用MATLAB大量函数对数据分析处理;第三步:将分析结果写入excel中。在整个过程中,不需要打开excel软件,操作十分方便,每次操作唯一要做就是修改excel所在的目录及文件名。主要函数如下(具体使用方法可在MATLAB命令窗口输入help +函数名 查看):
Xlsread 从excel中读数据
Xlswrite 向excel中邪数据
num2str 将数字转换为字符串
strncmp 字符串比较
polyfit 数据拟合
polyval 具体数值代入求值
plot 作图
xlabel x轴标注
ylabel y轴标注
title 图名称标注
还想写点其他的,想想最近自己真没有用到,所以就不写了,MATLAB还有一个好处就是数据运算像写数学式子一样方便,包括加减,点乘点除,又如sum(求和),length(求数据长度),两个相除就可以得到平均值,max(求最大数),min(最小数);总之用起来还是很方便的。
下面介绍一个具体实例,由于我最近老是需要测试芯片,然后芯片类型比较相似,只要测输入电压,输入电流,输出电流(某个阶段是恒定的),输出功率,最后计算效率,然后我就用MATLAB完成了这些操作,还画图保存在相应的位置。具体代码如下:
file='F:\\XP\\box\\LY99';%每次操作前目录必须要修改
Vin=xlsread(file,'a3:a500');%读数据可以多读,所以多读500个,数据不可超过500;
Iin=xlsread(file,'b3:b500');
Iout=xlsread(file,'c3:c500');
Pout=xlsread(file,'d3:d500');
Pin=Vin.*Iin/1000;n=Pout./Pin*100;
IoutStr=num2str(Iout);Pout=Pout/70;
xlswrite(file,n,'sheet1','e3');%写入地址,最好改,不然有可能显示NA或部分数据没有完全写入
str=IoutStr(1,1:3);
Num_totle=size(Vin);
j=1;f_t=1;
for i=1:Num_totle
TF=strncmp(str,IoutStr(i,1:3),3);
if TF==0
j=1;figure(f_t);
plot(x,y,'r*-');
xlabel('Vin(v)');
ylabel('n(%)');
ttt=strcat('Iout=',str,'mA');
title(ttt);
grid on;
x=0;y=0;
f_t=f_t+1;
str=IoutStr(i,1:3);
end
x(j)=Vin(i); y(j)=n(i); j=j+1;
end
figure(f_t);
plot(x,y,'r*-');
xlabel('Vin(v)');ylabel('n(%)');
ttt=strcat('Iout=',str,'mA');
title(ttt);
grid on
为了节省空间,就缩放下了,这个m文件初稿是在断网的情况下写的,刚开始代码比较简便,也存在很多的漏洞,这是我不断修改后得到的比较满意的代码。该m文件分为读数据,计算效率,将效率写入excel中,最后是根据输出电流的不同画效率的折线图,运用字符串的操作命名图形名称及标题,并保存在excel所在的文件夹下,每次操作只需要更改文件名及路径就可以完成计算画图等。大大节约了没有必要浪费的时间。还有一点比较局限的是excel中每次数据存数数据位置不能改变,当然对数据个数没有太大的,根据需要可以加大数据个数。
这里没有用到数据拟合,因为没有这个必要,数据拟合在实际当中应用还是很广的,所以在常用函数里面写了,希望引起注意。还有一点,不能将画好的图形保存在excel文件当中,找了很久没有找到这样的函数,于是便有了EXLINK。
三、EXLINK介绍
正是由于不能通过函数将图写入excel文档,于是便有了exlink。exlink是MATLAB的一个工具箱,也是excel与MATLAB的一个接口,这个时候更像是在操作excel,通过excel可以运行MATLAB函数,发送和读数据,读图像等等操作,当然也可以在MATLAB命令窗口运行相关函数。运行excel可以同时运行MATLAB,这个时候MATLAB更像是excel的一个辅助软件,让excel的功能更加强大,并且exlink一直很受欢迎。
四、EXLINK使用
使用步骤如下:首先成功安装excel和MATLAB,打开excel,加载宏(工具—加载宏I—-浏览(找到MATLAB安装目录下toolbox—-exlink—-excell
ink.xla))--确定,并在前面复选框内打勾,确定。这就完成了exlink的连接,完成之后效果如图1所示。注:也许你觉得我老土,居然还在使用2003版本的excel,其实不是的,我装的MATLAB2009a没有对应的xlam文件(excellink2007.xlam),并且使用WPS非专业版还不能加载宏,所以只能使用2003版的办公软件了。
图1 exlink加载成功的界面
从左到右,分别为启动MATLAB,放数据到MATLAB,从MATLAB读取数据,运行MATLAB函数,获取MATLAB图像,函数向导,exlink设置。这里每次启动excel都会启动MATLAB,MATLAB大启动慢,为了不启动MATLAB可以在excel内输入MLAtuoStart(“no”),即可启动excel而不启动MATLAB,需要的时候只需要将no改为yes即可。下面做一个简单的测试。单击启动MATLAB按钮(若已经启动可省略),在MATLAB中运行如下程序及结果如图2图3所示。
图2 测试程序代码
图3 程序运行结果
然后再excel中输入x,y,单击A2,并单击getmatrix,再提示框中输入x并确定得到如图4所示。
图4 从MATLAB读入数据后
同理输入y,也可以单击getfigure,得到如图5所示的图形。
图5 从MATLAB读取图像
在excel中执行MATLAB函数,可输入MLEvalString(“a=magic(3);”);magic为MATLAB函数,此时excel内显示为0,但他是一个矩阵,可将这个值赋给MATLAB变量,单击putmatrix,再提示框内输入a,可以发现MATLAB多了一个变量a,在命令窗口中输入a并回车,可以发现a是一个的魔方矩阵。这里就不再截图浪费版面了。这就是exlink使用基础,至于怎么运用就看实际情况灵活使用了。这个接口能用起来还是很不错的,强烈建议使用。
五、总结
首先介绍了利用MATLAB函数读取excel数据,处理、分析、可视化数据,将结果写入excel中。然后结合近期本人写的m文件进一步可视化数据,根据具体要求作图,并将图形保存在excel所在的文件夹下,由于将图形保存在excel中更为妥当,但是MATLAB并没有这样的函数,所以就有了exlink,exlink是利用excel来操作MATLAB,在其自身功能上再充分利用MATLAB的资源,达到了更好的可视化图形,对于分析复杂数据有着极其重要的意义。
还有空间:写点参考文献吧,大家懂得就好
MATLAB应用大全 清华大学出版社 赵海滨 2012年5月
Excellink宏在数据分析中的应用 梁坤峰等 2002年
