function B=distanceab()
[file,path]=uigetfile({'*.xls','Excel文档'},'选择文件');
if file==0
return;
end
A=xlsread([path file]);n=size(A,1);
if n>362
msgbox('数据量太大,excel将无法保存!','警告');
end
B=[];h=waitbar(0,'数据处理中,请等待...');
for i=1:(n-1)
j=(i+1):n;
B=[B;[repmat(A(i,:),n-i,1),A(j,:),sqrt(sum((repmat(A(i,:),n-i,1)-A(j,:)).^2,2))]];
waitbar(i/(n-1),h,'数据处理中,请等待...');
end
waitbar(1,h,'数据处理完毕!');
pause(.5);
delete(h);pause(eps);
if n>362
return;
end
[file,path]=uiputfile({'*.xls','Excel文档'},'输出结果');
if file
xlswrite([path file],B,strcat('A1:E',num2str(size(B,1))));
else
msgbox('你放弃了保存','消息框');
end
大概就是这样子了。xlsread和xlswrite命令格式忘记了。家里电脑没装matlab调试不了。,大概就是这样了,随便再调调就可以了。
%1 读入文件数据
X = xlsread("xls文件路径名",表单名,(A1:A25535));
Y = xlsread("xls文件路径名",表单名,(B1:B25535));
% 表单名就是打开xls文件下面那个sheet1,第三个是读取范围。
%2 计算两两点之间举例,调用一个子函数。
distance = [];
for i = 1:length(X)
for j = 1:length(Y)
distance(i,j) = caculDistance(i,j,X,Y);
end
end
% 3 将结果写入文件,新建一个名叫result的表单。
xlswrite("xls文件路径名",result,distance);
%% 计算两点举例子函数,让主程序清晰一些。
function distance = caculDistance(i,j,X,Y)
x1 = X(i);
y1 = Y(i);
x2 = X(j);
y2 = Y(j);
distance = sqt( (x1-x2)^2 + (y1 - y2)^2 );
end