?? sort.cpp
字號:
// Sort.cpp
#include "stdafx.h"
#include "Sort.h"
extern int dim;
Sort::Sort()
{
z = Pattern();
n = 0;
_d = 0.0;
max = 0;
sigma_max = 0.0;
for(int i=0;i<MAXNUM;i++)
x[i] = Pattern();
for(int i=0;i<MAXDIM;i++)
sigma[i] = 0.0;
}
Sort::~Sort()
{
}
// 判pattern為該類
int Sort::Insert(Pattern pattern)
{
x[n] = pattern;
n++;
return n;
}
// 計算類心
Pattern Sort::CalCenter()
{
z = Pattern();
for(int i=0;i<n;i++)
z += x[i];
z /= n;
return z;
}
double Sort::Cal_D() // 計算模式到類心的平均距離
{
_d = 0.0;
for(int i=0;i<n;i++)
_d += Pattern::Distance(x[i], z);
_d /= n;
return _d;
}
// 計算類內距離的標準差矢量
int Sort::CalSigma()
{
double temp = 0.0;
for(int k=0;k<dim;k++)
{
for(int i=0;i<n;i++)
temp += (x[i].x[k] - z.x[k])*(x[i].x[k] - z.x[k]);
sigma[k] = sqrt(temp/n);
if(sigma_max < sigma[k])
{
sigma_max = sigma[k];
max = k;
}
}
return max;
}
// 當兩類均未合并過時,將該類與w類合并
bool Sort::Combin(Sort &w)
{
if( (z.n < 0) || (w.z.n < 0) )
return false;
z = (1/(n+w.n)) * (n * z + w.n + w.z );
z.n = -1; // 新的聚類中心,不可取消
w.z.n = -2; // 應取消中心的類
return true;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -