let m be in [1, ∞); // Note m is usually 2. m controls the level of fuzziness.
initialize the means (oac centroids or prototypes) vector C=[cj];
while the change is not insignificant
Update membership matrix U=[uij] with C:
for point i and cluster j,
uij = 1 / (Σk((∥xi-cj∥ / ∥xi-ck∥)2/(m-1))
Update C with U:
for cluster j,
cj = Σi(uijm · xi) / Σi(uijm);
draw().