Ejemplo n.º 1
0
int main()
{
	const int N = 16;

	float a[N*N];
	float b[N*N];
	float c[N*N];

	for (int i = 0; i < N; i++)
		for (int j = 0; j < N; j++)
		{
			a[i+j*N] = 10 + i;
			b[i+j*N] = (float)j / N;
		}
	int start_time=GetMicroseconds();
	add_matrix(a, b, c, N);
	int end_time=GetMicroseconds();
	
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			printf("%0.2f ", c[i+j*N]);
		}
		printf("\n");
	}
	printf("\n time elapsed is: %i \n",end_time-start_time);
}
Ejemplo n.º 2
0
int main()
{
  const int N = 1024;
  
  float *a = new float[N*N];
  float *b = new float[N*N];
  float *c = new float[N*N];

  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
      {
	a[i+j*N] = 10 + i;
	b[i+j*N] = (float)j / N;
      }
  
  ResetMilli();
  add_matrix(a, b, c, N);
  printf("Total time in ms: %d\n", GetMicroseconds());

  /* for (int i = 0; i < N; i++) */
  /*   { */
  /*     for (int j = 0; j < N; j++) */
  /* 	{ */
  /* 	  printf("%0.2f ", c[i+j*N]); */
  /* 	} */
  /*     printf("\n"); */
  /*   } */
}
Ejemplo n.º 3
0
int main()
{
	matrix_t m1;
	matrix_t m2;
	matrix_t m3;
	int choice;
	char file_1[20];
	char file_2[20];
	int r1,c1,r2,c2;
	printf("Enter the first file name\n");
	scanf("%s", file_1);
	printf("Enter its row size & coloumn size\n");
	scanf("%d%d", &r1,&c1);
	printf("Enter the second file name\n");
	scanf("%s", file_2);
	printf("Enter its row size & coloumn size\n");
	scanf("%d%d",&r2, &c2);
	m1=init(m1,r1,c1);
	m2=init(m2,r2,c2);
	//create the  list of first matrix
	m1=create_list(m1,file_1);
	//Creating the list of second matrix 
	m2=create_list(m2,file_2);
	printf("_____________________________________________________________________________________________________________________________________________\n");
	printf("First matrix list\n");
	printf("______________________________________________________________________________________________________________________________________________\n");
	display(m1);
	printf("_______________________________________________________________________________________________________________________________________________\n");
	printf("Second matrix list\n");
	printf("_______________________________________________________________________________________________________________________________________________\n");
	display(m2);
	printf("_______________________________________________________________________________________________________________________________________________\n");
	printf("\t\t\t\t\t Operations menu\n");
	printf("1.Add\n");
	printf("2.Multiply\n");
	scanf("%d", &choice);
	switch(choice)
	{
		case 1:
			m3=add_matrix(m1,m2,m3);
			printf("___________________________________________________________________________________________________________________________\n");
			printf("Sum list\n");
			printf("_____________________________________________________________________________________________________________________________\n");
			display(m3);
			printf("______________________________________________________________________________________________________________________________\n");
			break;
		case 2:
			m3=multiply_matrix(m1,m2,m3);	
			printf("____________________________________________________________________________________________________________________________\n");
			printf("Product list \n");
			printf("______________________________________________________________________________________________________________________________\n");
			display(m3);
			printf("____________________________________________________________________________________________________________________________\n");
			break;	
		deafault:
			exit(0);
	}
	return 0;
}
Ejemplo n.º 4
0
int main()
{
    Crosslist mat1, mat2, mat3;
    creat_matrix(&mat1);
    print_matrix(&mat1);
    creat_matrix(&mat2);
    print_matrix(&mat2);
    add_matrix(&mat1, &mat2, &mat3);
    print_matrix(&mat3);
    return 0;
}
Ejemplo n.º 5
0
void estimate(KalmanFilter f) {
    /* Calculate innovation */
    multiply_matrix(f.observation_model, f.predicted_state,
                    f.innovation);
    subtract_matrix(f.observation, f.innovation,
                    f.innovation);

    /* Calculate innovation covariance */
    multiply_by_transpose_matrix(f.predicted_estimate_covariance,
                                 f.observation_model,
                                 f.vertical_scratch);
    multiply_matrix(f.observation_model, f.vertical_scratch,
                    f.innovation_covariance);
    add_matrix(f.innovation_covariance, f.observation_noise_covariance,
               f.innovation_covariance);

    /* Invert the innovation covariance.
       Note: this destroys the innovation covariance.
       TODO: handle inversion failure intelligently. */
    destructive_invert_matrix(f.innovation_covariance,
                              f.inverse_innovation_covariance);

    /* Calculate the optimal Kalman gain.
       Note we still have a useful partial product in vertical scratch
       from the innovation covariance. */
    multiply_matrix(f.vertical_scratch, f.inverse_innovation_covariance,
                    f.optimal_gain);

    /* Estimate the state */
    multiply_matrix(f.optimal_gain, f.innovation,
                    f.state_estimate);
    add_matrix(f.state_estimate, f.predicted_state,
               f.state_estimate);

    /* Estimate the state covariance */
    multiply_matrix(f.optimal_gain, f.observation_model,
                    f.big_square_scratch);
    subtract_from_identity_matrix(f.big_square_scratch);
    multiply_matrix(f.big_square_scratch, f.predicted_estimate_covariance,
                    f.estimate_covariance);
}
Ejemplo n.º 6
0
void predict(KalmanFilter f) {
    f.timestep++;

    /* Predict the state */
    multiply_matrix(f.state_transition, f.state_estimate,
                    f.predicted_state);

    /* Predict the state estimate covariance */
    multiply_matrix(f.state_transition, f.estimate_covariance,
                    f.big_square_scratch);
    multiply_by_transpose_matrix(f.big_square_scratch, f.state_transition,
                                 f.predicted_estimate_covariance);
    add_matrix(f.predicted_estimate_covariance, f.process_noise_covariance,
               f.predicted_estimate_covariance);
}
Ejemplo n.º 7
0
Archivo: rbm.cpp Proyecto: hakimsd9/RBM
// Gradient ascent update for the weights
void rbm::update_weights(float ** weights, float ** delta_weights, float learning_rate, int n, int m, float size_mBatch){
    multiply_constant_matrix(delta_weights,learning_rate, n, m);
    add_matrix(weights, delta_weights, n, m);
}
Ejemplo n.º 8
0
// Adds two matrices elementwise and returns a new matrix.
Matrix *add_matrix_func(Matrix *A, Matrix *B) {
    Matrix *C = make_matrix(A->rows, A->cols);
    add_matrix(A, B, C);
    return C;
}
Ejemplo n.º 9
0
int main(){
    double a[ROW * COLUMN] = {
         1.0,  2.0,  3.0,  4.0,
         5.0,  6.0,  7.0,  8.0,
         9.0, 10.0, 11.0, 12.0,
    };
    double b[ROW * COLUMN] = {
         2.0,  3.0,  4.0,  5.0,
         6.0,  7.0,  8.0,  9.0,
        10.0, 11.0, 12.0, 13.0,
    };
    double c[ROW * COLUMN] = {0.0};
    double d[ROW] = {1.0, 2.0, 3.0};
    double e[ROW] = {2.0, 5.0, 7.0};
    double f[ROW] = {0.0};
    uint32_t i = 0;
    uint32_t j = 0;

    /*
     * test add_matrix
     * */

    /* show A */
    printf("A\n");
    for(i = 0; i < ROW; i++){
        for(j = 0; j < COLUMN; j++) printf("%15.5lf", a[i * COLUMN + j]);
        printf("\n");
    }
    printf("\n");

    /* show B */
    printf("B\n");
    for(i = 0; i < ROW; i++){
        for(j = 0; j < COLUMN; j++) printf("%15.5lf", b[i * COLUMN + j]);
        printf("\n");
    }
    printf("\n");

    /* calculate */
    add_matrix(a, b, c, ROW, COLUMN);

    /* show C */
    printf("C = A + B\n");
    for(i = 0; i < ROW; i++){
        for(j = 0; j < COLUMN; j++) printf("%15.5lf", c[i * COLUMN + j]);
        printf("\n");
    }
    printf("\n");

    /*
     * test dot_vector
     * */

    /* show D */
    printf("D\n");
	for(i = 0; i < ROW; i++) printf("%15.5lf", d[i]);
    printf("\n\n");

    /* show E */
    printf("E\n");
	for(i = 0; i < ROW; i++) printf("%15.5lf", e[i]);
    printf("\n\n");

    /* calculate & show result */
    printf("x = D dot E\n");
    printf("%15.5lf",dot_vector(d, e, ROW));
    printf("\n\n");

    /*
     * test cross_vector
     * */

    /* show D */
    printf("D\n");
	for(i = 0; i < ROW; i++) printf("%15.5lf", d[i]);
    printf("\n\n");

    /* show E */
    printf("E\n");
	for(i = 0; i < ROW; i++) printf("%15.5lf", e[i]);
    printf("\n\n");

    /* calculate */
    cross_vector(d, e, f, ROW);

    /* show F */
    printf("F = D x E\n");
	for(i = 0; i < ROW; i++) printf("%15.5lf", f[i]);
    printf("\n");

    return 0;
}
Ejemplo n.º 10
0
int main(void)
{
	crosslist one,two,three;
    int choice;//as a mark of selection	
    char flag;//selection mark
    while(1)
	{
		system("cls");
        system("color 81");
        system("mode con cols=80 lines=400");
        system("title #Crosslist To Deal With Sparse Matrix#");
        printf("\t@*************************************************************@\n");
        putchar('\n');	
        printf("\t\t %c----------稀疏矩阵-应用程序系统----------%c\n",2,2);
        putchar('\n');
        printf("\t@*************************************************************@\n");	
        printf("\t$*************************************************************$\n");
        printf("\t\t %c----------------功能选择-----------------%c\n",2,2);
        putchar('\n');	
        printf("\t\t %c-----------------------------------------%c\n",2,2);
        printf("\t\t %c <1> 稀疏矩阵的加法运算 %c\n",2,2);	
        printf("\t\t %c-----------------------------------------%c\n",2,2);
        printf("\t\t %c <2> 稀疏矩阵的减法运算 %c\n",2,2);	
        printf("\t\t %c-----------------------------------------%c\n",2,2);
        printf("\t\t %c <3> 稀疏矩阵的乘法运算 %c\n",2,2);	
        printf("\t\t %c-----------------------------------------%c\n",2,2);
        printf("\t\t %c <4> 退出应用程序 %c\n",2,2);	
        printf("\t\t %c-----------------------------------------%c\n",2,2);
        putchar('\n');
        printf("\t\t %c-----------矩阵以行序为主序-----------%c\n",2,2);	
        printf("\t$*************************************************************$\n");
        printf("\t\t!!注意:如果想终止程序,请按 Ctrl +C\n");	
        printf("\t$*************************************************************$\n\n");
        printf("请输入你的选择:(1--4)\n");
        fflush(stdin);//清空输入缓冲区
        printf("你的选择是:");
        scanf("%d",&choice);
	    putchar('\n');
        switch(choice)
        {
		case 1: printf("\t<加法运算>\n");	
			putchar('\n');

			init_matrix(one);//初始化矩阵one

			printf("\t<建立第一个矩阵>\n");
			creat_matrix(one);
			putchar('\n');
			printf("第一个矩阵如下:\n");

			printf("-------------------------------------------------\n");
			print_matrix(one);
			printf("-------------------------------------------------\n");

			init_matrix(two);//初始化矩阵two
			putchar('\n');
			printf("\t<建立第二个矩阵>\n");
			creat_matrix(two);
			putchar('\n');
			printf("第二个矩阵如下:\n");

			printf("-------------------------------------------------\n");
			print_matrix(two);
			printf("-------------------------------------------------\n");
			
			/*add the two matrix*/
	        putchar('\n');
			printf("两个矩阵相加\n");

			init_matrix(three);//初始化矩阵three
			putchar('\n');

			add_matrix(one,two,three);
			printf("结果如下:\n");
			printf("-------------------------------------------------\n");
			Sleep(1000);
			print_matrix(three);
			printf("-------------------------------------------------\n");
			system("pause");
			break;

		case 2: printf("\t<减法运算>\n");	
			putchar('\n');

			init_matrix(one);//初始化矩阵one

			printf("\t<建立第一个矩阵>\n");
			creat_matrix(one);
			putchar('\n');
			printf("第一个矩阵如下:\n");

			printf("-------------------------------------------------\n");
			print_matrix(one);
			printf("-------------------------------------------------\n");

			init_matrix(two);//初始化矩阵two
			putchar('\n');
			printf("\t<建立第二个矩阵>\n");
			creat_matrix(two);
			putchar('\n');
			printf("第二个矩阵如下:\n");

			printf("-------------------------------------------------\n");
			print_matrix(two);	
			printf("-------------------------------------------------\n");

			/*add the two matrix*/
         	putchar('\n');
			printf("两个矩阵相减\n");

			init_matrix(three);//初始化矩阵three
			putchar('\n');
            opposite_matrix(two);
			add_matrix(one,two,three);
			printf("结果如下:\n");
			printf("-------------------------------------------------\n");
			Sleep(1000);
			print_matrix(three);
			printf("-------------------------------------------------\n");
			system("pause");
			break;

		case 3: printf("\t<乘法运算>\n");
            putchar('\n');

			init_matrix(one);//初始化矩阵one
			putchar('\n');

			printf("\t<建立第一个矩阵>\n");
			creat_matrix(one);
			putchar('\n');
			printf("第一个矩阵如下:\n");

			printf("-------------------------------------------------\n");
			print_matrix(one);
			printf("-------------------------------------------------\n");

			init_matrix(two);//初始化矩阵two
			putchar('\n');
			printf("\t<建立第二个矩阵>\n");
			creat_matrix(two);
			putchar('\n');
			printf("第二个矩阵如下:\n");

			printf("-------------------------------------------------\n");
			print_matrix(two);
			printf("-------------------------------------------------\n");		

            /*multiply the two matrix*/
         	putchar('\n');
            printf("两个矩阵相乘\n");
            init_matrix(three);
            multi_matrix(one,two,three);
            printf("结果如下:\n");
			printf("-------------------------------------------------\n");
            Sleep(1000);
            print_matrix(three);
			printf("-------------------------------------------------\n");
            system("pause");
            break;

		case 4:	printf("你确定退出程序吗<Y/N>?\n");
            fflush(stdin);
            scanf("%c",&flag);
            if(flag=='y'||flag=='Y'||flag=='\n')
			{
                printf("\t\t%c-------%c-------%c-------%c-------%c\n",2,2,2,2,2);
                putchar('\n');
                printf("\t\t(^_^)谢谢使用!(^_^)\n");	
                putchar('\n');
                printf("\t\t%c-------%c-------%c-------%c-------%c\n",2,2,2,2,2);
                putchar('\n');
                Sleep(2000);
                exit(1);
			}
            else  
			{
                printf("………欢迎继续使用………\n");
                Sleep(2000);
			}
            break;

		default:printf("请输入有效的选择 1 ~ 4!\n");
            Sleep(2000);
            break;
       }//switch
    }//while	
    return 1;
}
Ejemplo n.º 11
0
 FORALLSITES(i, s) {
   mult_nn(&(s->link[dir2]), (matrix *)(gen_pt[1][i]), &tmat1);
   mult_nn(&tmat1, (matrix *)(gen_pt[2][i]), &tmat2);
   mult_na(&tmat2, (matrix *)(gen_pt[0][i]), &tmat1);
   add_matrix(&(s->tempmat2), &tmat1, &(s->tempmat2));
 }