在Excel中的lookup函數很容易可以實現以下功能:根據左側序號對應的姓名匹配右側相同序號的姓名。
現在小編就在琢磨能不能用matlab實現Excel的lookup匹配查找的功能,以下是小編寫的功能函數lookup
function Result_data=Lookup(x,y,xdata) ? ?% x為需要查找的 ? ?% y為x查找的范圍數據 ? ?%xdata為當x=y時候,所匹配的數據,x和xdata數據是對應的 ? ?%聲明空間 ? ?index_x=zeros(1,length(x)); ? ?index_y=zeros(1,length(x)); ? ?data=num2cell(zeros(length(y),2)*NaN); ? ?for i=1:length(x) ? ? ? ?for j=1:length(y) ? ? ? ? ? ?if isequal(x(i),y(j)) ? ? ? ? ? ? ? ?index_x(i)=i; ? ? ? ? ? ? ? ?index_y(i)=j; ? ? ? ? ? ?end ? ? ? ?end ? ?end ? ?index_x(find(index_x==0))=[]; ? ?index_y(find(index_y==0))=[]; ? ?data(:,1)=y; ? ?for n=1:length(index_x)%子集長度 % ? ? ? ?data(index_y(n),2)=x(index_x(n)); ? ? ? data(index_y(n),2)=xdata(index_x(n)); ? ?end ? ?Result_data=data;end
讀入Excel數據
clear,clc;[Num,TxT,Raw]=xlsread(‘data.xlsx’);result=Lookup(Raw(:,4),Raw(:,1),Raw(:,5))
顯示處理結果:
很容易看出數據匹配。
特別說明:Lookup(x,y,xdata)中的y必須是升序或者降序排列,不能為亂序排列,否則會出現匹配錯誤。