Dies ist Teil meiner Implementierung von kmean
Algorithmus. Ich habe zwei Speicherblocks sowohl in gleicher Größe, so daß *cluster_center
der aktuelle Mittelpunkt des Clusters ist und *new_centroids
repräsentiert den neuen Schwerpunkt nach dem Mittelwert der Punkte des Clusters unter:Vergleich der Gleichheit der Werte zwischen zwei Speicherblöcken
double *cluster_center = malloc((k * dim) * sizeof(double));
double *new_centroids = malloc((k * dim) * sizeof(double));
Ich habe folgende Schleife um die Ergebnisse zu kopieren vom new_centroids
zum cluster_center
ohne Probleme:
for (int i = 0; i < k; ++i) {
memcpy(&cluster_center[i * dim], &new_centroids[i * dim], dim * sizeof(double));
}
In der Tat, ich mag wissen, ob C über eine integrierten IT-Funktion vergleichen die Werte beiden Blöcke hat, da ich einmal meinen Algorithmus beenden will, dass die Werte von *new_centroids
und *cluster_center
sind die gleichen (d. H. Änderten sich nicht). Ich weiß wirklich nicht, wie ich das machen soll.
Danke
Suchen Sie 'memcmp()' für einen binären Vergleich. Kann für den Vergleich von 'double'' + 0.0', '-0.0' und' NaN' nicht ausreichend sein – chux
Sie meinen wie ['memcmp'] (http://en.cppreference.com/w/c/string/byte/memcmp)? –
Ich meine die ** Werte ** beider Arrays zu vergleichen, wenn sie ähnlich sind. Ich denke "Memcmp" vergleicht nur die Länge nicht die tatsächlichen Werte Ähnlichkeiten !! – Kris