please help, anybody explain me the meaning of following code

1 vue (au cours des 30 derniers jours)
Jishnu C Rajan
Jishnu C Rajan le 22 Sep 2014
Commenté : Adam le 22 Sep 2014
distance = ((vector- vec_mean).^2);
vec_mean(2:end,:)=[];
[~,label_vector] = min(distance,[],2);
% i=1:no_of_cluster;
for i=1:no_of_cluster
index=(label_vector==i);
vec_mean(:,i)=sum(vector(index))/nnz(index);
end
  3 commentaires
Adam
Adam le 22 Sep 2014
~ in that context just means ignore that output from the function.
You need to ask more specific questions though really. If you can't understand anything at all in that code then you need to read the basic Matlab help. If you can understand most of it then ask about the specific things you do not understand.
Stephen23
Stephen23 le 22 Sep 2014
Based on your response, you should read MATLAB's own introduction to programming concepts . You will find explanations, examples and other interesting info to read... just navigate around using the help's contents browser on the left hand side of the window.
To help you to understand that code, start with the sections "Language Fundamentals" and "Programming Scripts and Functions".

Connectez-vous pour commenter.

Réponse acceptée

Adam
Adam le 22 Sep 2014
I don't really know what you want explaining, but it doesn't look like the code can run successfully.
index=(label_vector==i);
will return a logical 0 or 1 which then appears to be used as an index into an array which will be impossible in all case except where label_vector == i.
  2 commentaires
Guillaume
Guillaume le 22 Sep 2014
logical arrays can be used to index into other arrays just fine. You just get the element of the array where the logical array is true.
Actually, assuming vector and vec_mean are m x n matrices (the 2nd line of code would indicate so), label_vector and thus index are m x 1 arrays. index can be used just fine to get elements of vector
Because index is only as long as the number of rows in vector, sum(vector(index)) is only the sum of the elements of the 1st column of _vector where index is true. If that is indeed what is intended, it would be much clearer to be explicit about the column:
vec_mean(:, i) = sum(vector(index, 1)) / nnz(index);
Note that the expression is equivalent to:
vec_mean(:, 1) = mean(vector(index, 1));
Adam
Adam le 22 Sep 2014
Ah yes, of course, I've spent too long lately looking at my class objects' properties showing 0 where I had input a 'false' and forgetting it still behaves as a logical!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Package and Share Apps dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by