Error while calculating Cosine distance

20 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2018-12-25
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.

请先登录,再进行评论。

采纳的回答

madhan ravi
madhan ravi 2018-12-25
编辑:madhan ravi 2018-12-25
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 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by