当前位置:文档之家› 基于MATLAB的EXCEL数据计算与分析

基于MATLAB的EXCEL数据计算与分析

基于MATLAB的EXCEL数据计算与分析潜刘方摘要:再怎么样希望先看摘要,阅读本文需要一定的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\LY9899';%每次操作前目录必须要修改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_totleTF=strncmp(str,IoutStr(i,1:3),3);if TF==0j=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);endx(j)=Vin(i);y(j)=n(i);j=j+1;endfigure(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—-excellink.xla))--确定,并在前面复选框内打勾,确定。

这就完成了exlink的连接,完成之后效果如图1所示。

注:也许你觉得我老土,居然还在使用2003版本的excel,其实不是的,我装的MATLAB2009a没有对应的xlam文件(excellink2007.xlam),并且使用WPS非专业版还不能加载宏,所以只能使用2003版的办公软件了。

图1exlink加载成功的界面从左到右,分别为启动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,在命令窗3 的魔方矩阵。

这里就不再截图浪费版面了。

这口中输入a并回车,可以发现a是一个3就是exlink使用基础,至于怎么运用就看实际情况灵活使用了。

这个接口能用起来还是很不错的,强烈建议使用。

五、总结首先介绍了利用MATLAB函数读取excel数据,处理、分析、可视化数据,将结果写入excel中。

然后结合近期本人写的m文件进一步可视化数据,根据具体要求作图,并将图形保存在excel所在的文件夹下,由于将图形保存在excel中更为妥当,但是MATLAB 并没有这样的函数,所以就有了exlink,exlink是利用excel来操作MATLAB,在其自身功能上再充分利用MATLAB的资源,达到了更好的可视化图形,对于分析复杂数据有着极其重要的意义。

还有空间:写点参考文献吧,大家懂得就好MATLAB应用大全清华大学出版社赵海滨2012年5月Excellink宏在数据分析中的应用梁坤峰等2002年。

相关主题