2、两个函数编写
(1)将顺序数据转化为等级数据(与肯德尔和谐系数的一样):
function [b]=order2grade(a)
[n k]=size(a);%判断a矩阵的行列数
x=zeros(n,k);%生成一个零矩阵,其目的是为了为等级排列做一个框架
for i=1:k;
[g,c,d]=unique(a(:,i));%对数据进行等级排列
b(:,i)=d;%将排列等级数据填充到等级排列框架中
end
(2)斯皮尔曼相关函数
function [Rr]=spearman(x,y)
[n k]=size(x);
D=x-y;
D2=sum(D.*D);
Rr=1-((6*D2)/(n*(n^2-1)))
3、主函数编写
clear all;
a=input('请选择数据文件: ');
[b]=order2grade(a);
x=b(:,1);
y=b(:,2);
[Rr]=spearman(x,y);
diary('H:\data file\MATLAB\数据运行结果\斯皮尔曼相关系数.doc');
diary on;
disp(['斯皮尔曼相关系数为',num2str(Rr)])
diary off;
disp(['结果已保存,请在H:\data file\MATLAB\数据运行结果\斯皮尔曼相关系数.doc下查找'])
报告完毕,有不足之处请批评指正!