Error while calculating Cosine distance
2 views (last 30 days)
Show older comments
Balaji M. Sontakke
on 25 Dec 2018
Edited: madhan ravi
on 25 Dec 2018
Following is the error while calculating Cosine distance....
Subscripted assignment dimension mismatch.
Error in CosineDistance (line 28)
Distance(i,j) = - (ClientMean(i,:)'*EvalSet(j,:))/(norm_x*norm_y);
function Distance = CosineDistance(ClientMean, EvalSet)
% Calculate Cosine Distance
%
% Inputs:
% ClientSet ---- c* dim matrix
% EvalSet ---- n*dim matrix
% Outputs:
% Distance ---- c*n matrix
if ~exist('ClientMean','var')
error('Input arguments error.');
end
if ~exist('EvalSet','var')
error('Input arguments error.');
end
[c, d] = size(ClientMean);
[n, dim] = size(EvalSet);
if (d ~= dim)
error('Dimensionality disagreement.');
end
for i = 1 : c
for j = 1 : n
norm_x = norm(ClientMean);
norm_y = norm(EvalSet);
Distance(i,j) = - (ClientMean(i,:)'*EvalSet(j,:))/(norm_x*norm_y);
end
end
1 Comment
Walter Roberson
on 25 Dec 2018
Are you sure about that code? It would make more sense if it was
ClientMean(i,:)*EvalSet(j,:)'
as that would be 1 x d * d x 1, giving 1 x 1.
Accepted Answer
madhan ravi
on 25 Dec 2018
Edited: madhan ravi
on 25 Dec 2018
To view answer:
ClientMean=....your matrix;
EvalSet=....your matrix;
Distance = CosineDistance(ClientMean, EvalSet) % function call
celldisp(Distance) % after the calling of the function
Just change yours to below:
function Distance = CosineDistance(ClientMean, EvalSet) % function definition
% Calculate Cosine Distance
%
% Inputs:
% ClientSet ---- c* dim matrix
% EvalSet ---- n*dim matrix
% Outputs:
% Distance ---- c*n matrix
if ~exist('ClientMean','var')
error('Input arguments error.');
end
if ~exist('EvalSet','var')
error('Input arguments error.');
end
[c, d] = size(ClientMean);
[n, dim] = size(EvalSet);
if (d ~= dim)
error('Dimensionality disagreement.');
end
Distance=cell(c,n); % pre-allocate
ctr=1;
for i = 1 : c
for j = 1 : n
norm_x = norm(ClientMean);
norm_y = norm(EvalSet);
Distance{ctr} = - (ClientMean(i,:)'*EvalSet(j,:))/(norm_x*norm_y);
ctr=ctr+1;
end
end
end
0 Comments
More Answers (0)
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!