how to define Sorenson distance as a function?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I wrote this function for computing Sorenson distance (the formula of Sorenson is attached), Is this code right?
the colon is 62*2001 dataset(attached), when I use this function in my program instead of 62 instances I found 2 instances(rows) in the output.
load colon.mat
data=colon;
[n,m]=size(data);
l=1;
t=1;
data1=[];
data2=[];
for i=1:n
if data(i,m)==1
data1(l,:)=data(i,:);
l=l+1;
else
data2(t,:)=data(i,:);
t=t+1;
end
end
if t>l
data1(l:t-1,:)=0;
else
data2(t:l-1,:)=0;
end
%computing Distance measures
for i=1: m
thisCol1=data1(:,i);
thisCol2=data2(:,i);
a(i)=fSorensonDist(thisCol1,thisCol2);
end
[A,indA]=sort(a,'descend');
datas17=data(:,indA(1,10));
datas17=[datas17,data(:,m)];
save('datas17.mat');
I defined the sorenson function for computing distance:
function [ fsnd ] = fSorensonDist( p,q )
fsnd=sum(abs(p-q))/sum(p+q);
end
I'll be very grateful to have your opinions. Thanks
0 commentaires
Réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!