最近又用到matlab做GUI,之前学的全忘了,还好两年前留了大实验源码。
这次我来分析如何通过matlab处理excel数据
实验结果
对excel处理的效果:
实验原理
打开excel回调函数
function openexc_Callback(hObject, eventdata, handles)
[filename, pathname] = uigetfile({'*.xlsx';'*.slx';'*.mat';'*.*'},'File Selector');
set(handles.edit3,'string',[pathname,filename]);
excel文件内容
打开denggaoxian_Callback回调函数
这个看似画的图很厉害,其实直接调用的matlab的库函数。
function denggaoxian_Callback(hObject, eventdata, handles)namee=get(handles.edit3,'string')
temp1=xlsread(namee,'sheet1');
x=temp1(:,2);y=temp1(:,3);%数据格式均为列向量
alti=temp1(:,4);area=temp1(:,5);
uij=min(x):(max(x)-min(x))/100:max(x);
vij=min(y):(max(y)-min(y))/100:max(y);%a:c:b表示[a,a+c,……,a+n*c],其中n=fix((b-a)/c)[xi,yj]=meshgrid(uij,vij);
z2=griddata(x,y,alti,xi,yj,'natural');%插值法确认未知的z
figure(1);
mesh(xi,yj,z2)%曲面图colorbar;%显示图例
figure(2);
[C,h]=contour(xi,yj,z2,16);
clabel(C,h)hold on;
for i=1:length(area(:,1))if(area(i)==1)h1=plot3(x(i),y(i),alti(i),'wo');elseif(area(i)==2)h2=plot3(x(i),y(i),alti(i),'yo');elseif(area(i)==3)h3=plot3(x(i),y(i),alti(i),'go');elseif(area(i)==4)h4=plot3(x(i),y(i),alti(i),'mo');elseif(area(i)==5)h5=plot3(x(i),y(i),alti(i),'bo');end
end
hold off;
title('等高线图');
% hObject handle to denggaoxian (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
首先看一下matlab对矩阵的处理:
temp1=xlsread(namee,‘sheet1’);这句话就把excel的sheet1存到矩阵里了,对矩阵操作即可对excel数据操作。
>> A=[1 2 3;4 5 6]A =1 2 34 5 6
b=A(i, :)表示把矩阵A的第i行存入b
>> b=A(1,:)b =1 2 3
b=A( :,j)表示把矩阵A的第j列存入b
>> b=A(:,1)b =14
b=A(J :K)表示把矩阵A中[A(J),A(J+1),…,A(K)]这些元素存入b中
>> b=A(3:5)b =2 5 3
b=A(:,c:d)表示把矩阵A的第c到第d列存入b中,当然c,d大于A的列数则出错(b=A(c:d,:)表示取行)
>> A=[1 2 3;4 5 6;7 8 9]A =1 2 34 5 67 8 9>> b=A(:,2:3)b =2 35 68 9
a:c:b表示[a,a+c,……,a+n*c],其中n=fix((b-a)/c)
>> A=1:3:11A =1 4 7 10