基于MATLAB的EXCEL数据计算与分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的EXCEL数据计算与分析
潜刘方
摘要:再怎么样希望先看摘要,阅读本文需要一定的MA TLAB基础知识,不需要excel相关知识。结合本人近期工作上的需要测量计算,想偷懒就选择了利用MATLAB偷懒,于是便有了本文。本文首先利用MA TLAB读取数据,计算,将数据写入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_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所示。