MATLAB: What is happening actually in the following code

min

K = 8; % Cluster Numbers
CENTS = F( ceil(rand(K,1)*size(F,1)) ,:); % Cluster Centers
DAL = zeros(size(F,1),K+2); % Distances and Labels
KMI = 10; % K-means Iteration
for n = 1:KMI
for i = 1:size(F,1)
for j = 1:K
DAL(i,j) = norm(F(i,:) - CENTS(j,:));
end
*** I can't understand the below portions::::
[Distance, CN] = min(DAL(i,1:K)); % 1:K are Distance from Cluster Centers 1:K
DAL(i,K+1) = CN; % K+1 is Cluster Label
DAL(i,K+2) = Distance; % K+2 is Minimum Distance
end

Best Answer

‘why CN is assigned to k+1 and distances to k+2 ?’
Apparently, whoever wrote the code designed the ‘DAL’ matrix to have specific data in specific columns.
Note that before the loop, ‘K’ is fixed at 8 and does not change within the code you posted, so ‘CN’ will be written in column 9 and ‘Distance’ in column 10 throughout the code.
Also, the min function with two outputs will return the first occurrence of the minimum value in the first output, and the index of that value in the second output. So ‘CN’ is the index, and ‘Distance’ is the value.