Following is the error while calculating cosine distance
    2 次查看(过去 30 天)
  
       显示 更早的评论
    
                Following is the error while calculating cosine distance....
                Conversion to cell from double is not possible.
                Error in CosineDistance (line 26)
                        Distance(ctr) = - (ClientMean(i,:)'*EvalSet(j,:))/(norm_x*norm_y);
                Error in Evaluation (line 83)
                        Distance = CosineDistance(ClientMean, EvalSet);
                Error in DorsalHandVeinVerification (line 69)
                    [EvalFAR, EvalFRR, EvalEER, Thr] = Evaluation(TrainSet, gndTrain, EvalSet, gndEval,
                    options);
  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 个评论
采纳的回答
  KSSV
      
      
 2019-4-9
        
      编辑:KSSV
      
      
 2019-4-9
  
      cell is accessed using flower braces i.e {}. Replace Distance(ctr) with Distance{ctr}.
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 Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

