Exemple #1
0
int main ()
{
    int n = 0;
    initM ();

    /** 一直训练直到能够100%正确为止 **/
    while (1) {
        n ++;
        calcY ();
        int err = adjustM ();
        if (0 >= err) {
            /** 能够 100 %正确地回答问题了,结束训练 **/
            break;
        }
        printf ("错误数 %d\n", err);
    }

    printM ();
    printf ("阈值: %d, 训练次数: %d\n", ST, n);


    while (1) {
        int a = 0;
        scanf ("%i", &a);
        if (0 > a || 9 < a) {
            break;
        }

        test (a);
    }
    return 0;
}
Exemple #2
0
void main() {
	initM(0);
	popularRedeSocialAleatoriamente(0.6);
	imprimirRedeSocial();
	int n = numAmigosEmComum(2,4);
	printf("\nnumero de amigos em comum entre 2 e 4: %d", n);
	//se voce eh forte, remova o comentario da linha abaixo
	printf("\ncoef. de aglomeracao da pessoa 2 eh: %f", coeficienteAglomeracao(2));
	getch();
}
Exemple #3
0
double  CDescriptor::ComputeLineDir(double* pLinePts,int nCount,double dDxAvg, double dDyAvg)
{
	//利用最小二乘技术求方向
	initM(MATCOM_VERSION);
	Mm mMatrix = zeros(nCount,3);
	for(int g1 = 0; g1 < nCount; g1++)
	{
		mMatrix.r(g1+1,1) = pLinePts[2*g1];
		mMatrix.r(g1+1,2) = pLinePts[2*g1+1];
		mMatrix.r(g1+1,3) = 1;
	}

	//奇异值分解获得精确位置
	Mm u,s,v;
	i_o_t i_o = {0,0};
	svd(mMatrix,i_o,u,s,v);

	//计算方向
	double a = v.r(1,3);
	double b = v.r(2,3);
	double dMainArc = atan2(-b,a);
	dMainArc = LimitArc(dMainArc);

	//退出
	exitM();

	//判定方向
	double dMainArc1 = dMainArc - PI/2;
	dMainArc1 = LimitArc(dMainArc1);
	double dMainArc2 = dMainArc + PI/2;
	dMainArc2 = LimitArc(dMainArc2);
	double dAvgArc = atan2(-dDyAvg,-dDxAvg);
	dAvgArc = LimitArc(dAvgArc);

	double error1 = ArcDis(dMainArc1,dAvgArc);
	double error2 = ArcDis(dMainArc2,dAvgArc);

	//返回最终方向
	double nArcReturn = dMainArc1;
	if(error1 > error2)
		nArcReturn = dMainArc2;

	return nArcReturn;
}