資源簡介
實現了把n個二維向量聚類,聚成m個部分,僅供參考。
代碼片段和文件信息
#include
#include
#include
#include
#include
#include
using?namespace?std;
//把m個點分成n類
int?nm;
int?avxavyNodenum;
int?flag;
double?dist;
double?mindist;
struct?node{
????double?x;
????double?y;
};
typedef?list?NODELIST;
double?culdist(node?anode?b){
????return?sqrt(?(a.x-b.x)*(a.x-b.x)?+?(a.y-b.y)*(a.y-b.y)?);
}
int?main(){
????ifstream?in(“kmeans.txt“);
????in>>n;
????in>>m;
????NODELIST?init;
????NODELIST::iterator?i;
????double?XY;
????while(!(m--)){
????????in>>X>>Y;
????????node?temNode;
????????temNode.x?=?X;
????????temNode.y?=?Y;
????????init.push_back(temNode);
????}
????list?K_means;
????list::iterator?jminj;
????NODELIST?temList;
????flag?=?0;
????while(1){
????????//算中心
????????if(flag?==?0){
????????????i?=?init.begin();
????????????for(int?q=1;q<=n;++q){
????????????????temList.push_back(*i);
????????????????K_means.push_back(temList);
????????????????++i;
????????????}
????????????flag?=?1;
????????}
????????else{
????????????flag?=?0;
????????????node?temnode;
????????????for(j=K_means.begin();j!=K_means.end();++j){
????????????????avx?=?avy?=?0;
????????????????Nodenum?=?0;
????????????????while((*j).size()>1){//計算算新的中心
??????????
- 上一篇:計算兩個YUV視頻序列的PSNR
- 下一篇:在Qt中用C++編寫的計算器程序
評論
共有 條評論