2
これはkmean
アルゴリズムの実装の一部です。私は、メモリの2つのブロックを持って、両方の*cluster_center
は、クラスタの現在の中心であると*new_centroids
は、クラスタの点の平均を取った後、新たな重心を表すよう、同じサイズで:メモリの2つのブロック間の値の等価性を比較する
double *cluster_center = malloc((k * dim) * sizeof(double));
double *new_centroids = malloc((k * dim) * sizeof(double));
私は結果をコピーするには、次のループを持っていますnew_centroids
から問題なくcluster_center
に:実際には
for (int i = 0; i < k; ++i) {
memcpy(&cluster_center[i * dim], &new_centroids[i * dim], dim * sizeof(double));
}
、私はCは、私は一度私のアルゴリズムを終了したいので、値の両方のブロックのを比較するために、組み込み、それの機能を持っているかどうかを知りたいですの値は*new_centroids
と*cluster_center
は同じ(すなわち変化しなかった)。私は本当にそれをする方法を知らない。
memcmp
(比較メモリ)であるあなた
バイナリ比較のために 'memcmp()'を調べてください。 'double'' + 0.0'、' -0.0'と 'NaN'を比較するには不十分かもしれませんが、特別な扱いが必要です。 – chux
あなたは['memcmp'](http://en.cppreference.com/w/c/string/byte/memcmp)のような意味ですか? –
両方の配列の**値**が似ている場合は**の値を比較することを意味します。私は 'memcmp'は実際の値の類似性ではなく長さだけを比較すると思います!! – Kris