⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 madmain.c

📁 This is code tutorial for image processing include:histogram,sketon....
💻 C
字号:

/*
     madmain.c

     This file contains the main calling
     routine for the Madaline (Modified
     Adaptive Linear Element) program.

     Dwayne Phillips
     February 1992

   Notes:
  
   the inputs array x has N+2 elements
     x[0] is always 1
     then there are 1 to N elements
     then the last element is the target
   the weights array w has N+1 by A elements
     w[0] is the bias
     then there are 1 to N elements
   the nets array nets has A elements
   the outputs array outs has A elements
  
*/




#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>


main(argc, argv)
  int argc;
  char *argv[];
{
   char  choice;
   char  inputs_file[80], weights_file[80];
   FILE  *inputs, *weights;
   int   files_ok      = 1;
   long  **w, *x, *nets, *outs, N, A;
   int i, j;


   if(argc < 7){
      printf("\n\nUsage: madaline inputs_file weights_file ");
      printf("\n       size_of_vectors #_of_adalines mode choice_type");
      printf("\n   where mode=t (training)");
      printf("\n   where mode=i (input data)");
      printf("\n   where mode=w (working)");
      printf("\n   where choice_type=m (majority vote)");
      printf("\n   where choice_type=o (logical OR)");
      printf("\n   where choice_type=a (logical AND)");
      exit(1);
   }

   strcpy(inputs_file, argv[1]);
   strcpy(weights_file, argv[2]);

   N = atoi(argv[3]);
   A = atoi(argv[4]);

   if(argv[5][0] != 'i'  &&
      argv[5][0] != 'I'  &&
      argv[5][0] != 't'  &&
      argv[5][0] != 'T'  &&
      argv[5][0] != 'w'  &&
      argv[5][0] != 'W'){
        printf("\nERROR - Did not enter a correct mode");
        exit(1);
   }

   choice = argv[6][0];
   if(choice != 'o'  &&
      choice != 'O'  &&
      choice != 'A'  &&
      choice != 'a'  &&
      choice != 'm'  &&
      choice != 'M'){
        printf("\nERROR - Did not enter a correct choice type");
        exit(1);
   }

   x    = (long  *) malloc((N+2) * sizeof(long ));
   outs = (long  *) malloc(A * sizeof(long ));
   nets = (long  *) malloc(A * sizeof(long ));

   w = malloc(A * sizeof(long  *));
   for(i=0; i<A; i++){
      w[i] = malloc((N+1) * sizeof(long ));
      printf("\n\tw[%d] = %x", i, w[i]);
      if(w[i] == '\0'){
         printf("\n\tmalloc of w[%d] failed", i);
         exit(0);
      }
   }



      /* I N P U T   M O D E */

     if(argv[5][0] == 'i'  ||  argv[5][0] == 'I'){
      if( (inputs = fopen(inputs_file, "w+b")) == '\0'){
         printf("\n\nERROR - cannot open input vector file\n");
         exit(0);
      }
      else
         get_straight_input_vectors(inputs, x, N);
   }  /* ends if input_mode */


      /*  T R A I N I N G   M O D E */

   if(argv[5][0] == 't'  ||  argv[5][0] == 'T'){
      if( (inputs = fopen(inputs_file, "r+b")) == '\0'){
         printf("\n\nERROR - cannot open input vector file\n");
         files_ok = 0;
         exit(0);
      }

      if( (weights = fopen(weights_file, "w+b")) == '\0'){
         printf("\n\nERROR - cannot open weights vector file\n");
         files_ok = 0;
         exit(0);
      }

      if(files_ok){
                printf("files ok");
         train_the_madaline(inputs, weights, x, w,
                            nets, outs, N, A, choice);
        }

    }  /* ends training mode */



      /* W O R K I N G   M O D E */
   if(argv[5][0] == 'w'  ||  argv[5][0] == 'W'){

      if( (weights = fopen(weights_file, "r+b")) == '\0'){
         printf("\n\nERROR - cannot open weights vector file\n");
         exit(0);
      }
      else
         process_new_madaline(weights, x, w, nets, outs, choice, N, A);

   }  /* ends if working_mode */



      /* free up the allocated space */

   for(i=0; i<A; i++)
      free(w[i]);

   free(w);
   free(x);
   free(nets);
   free(outs);

}  /* ends main */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -