代码改变世界

matlab 处理excel

2022-04-05 17:57  jym蒟蒻  阅读(533)  评论(0编辑  收藏  举报

通过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     3

     4     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 =

     1

     4

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     3

     4     5     6

     7     8     9
     
>> b=A(:,2:3)

b =

     2     3

     5     6

     8     9

a:c:b表示[a,a+c,……,a+n*c],其中n=fix((b-a)/c)

>> A=1:3:11

A =

     1     4     7    10