亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pca_hao.c

?? VC 6.0下的主成分分析代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************/
/* Principal Components Analysis */
/*********************************/

/*********************************************************************/
/* Principal Components Analysis or the Karhunen-Loeve expansion is a
   classical method for dimensionality reduction or exploratory data
   analysis.  One reference among many is: F. Murtagh and A. Heck,
   Multivariate Data Analysis, Kluwer Academic, Dordrecht, 1987 
   (hardbound, paperback and accompanying diskette).

   This program is public-domain.  If of importance, please reference 
   the author.  Please also send comments of any kind to the author:

   F. Murtagh
   Schlossgartenweg 1          or        35 St. Helen's Road
   D-8045 Ismaning                       Booterstown, Co. Dublin
   W. Germany                            Ireland

   Phone:        + 49 89 32006298 (work)
                 + 49 89 965307 (home)
   Telex:        528 282 22 eo d
   Fax:          + 49 89 3202362
   Earn/Bitnet:  fionn@dgaeso51,  fim@dgaipp1s,  murtagh@stsci
   Span:         esomc1::fionn
   Internet:     murtagh@scivax.stsci.edu
   

   A Fortran version of this program is also available.     
    
   F. Murtagh, Munich, 6 June 1989                                   */   
/*********************************************************************/

#include <stdio.h>
#include <string.h>
#include <math.h>

#define SIGN(a, b) ( (b) < 0 ? -fabs(a) : fabs(a) )

main(argc, argv)
int argc;
char *argv[];

{
FILE *stream;
int  n, m,  i, j, k, k2;
float **data, **matrix(), **symmat, **symmat2, *vector(), *evals, *interm;
void free_matrix(), free_vector(), corcol(), covcol(), scpcol();
void tred2(), tqli();
float in_value;
char option, *strncpy();

/*********************************************************************
   Get from command line:
   input data file name, #rows, #cols, option.

   Open input file: fopen opens the file whose name is stored in the
   pointer argv[argc-1]; if unsuccessful, error message is printed to
   stderr.
*********************************************************************/

   if (argc !=  5)
      {
      printf("Syntax help: PCA filename #rows #cols option\n\n");
      printf("(filename -- give full path name,\n");
      printf(" #rows                          \n");
      printf(" #cols    -- integer values,\n");                  
      printf(" option   -- R (recommended) for correlation analysis,\n");
      printf("             V for variance/covariance analysis\n");
      printf("             S for SSCP analysis.)\n");
      exit(1);
      }

   n = atoi(argv[2]);              /* # rows */
   m = atoi(argv[3]);              /* # columns */
   strncpy(&option,argv[4],1);     /* Analysis option */

   printf("No. of rows: %d, no. of columns: %d.\n",n,m);
   printf("Input file: %s.\n",argv[1]);

   if ((stream = fopen(argv[1],"r")) == NULL)
      {
      fprintf(stderr, "Program %s : cannot open file %s\n",
                       argv[0], argv[1]);
      fprintf(stderr, "Exiting to system.");
      exit(1);
      /* Note: in versions of DOS prior to 3.0, argv[0] contains the
         string "C". */
      }

    /* Now read in data. */

    data = matrix(n, m);  /* Storage allocation for input data */

    for (i = 1; i <= n; i++)
        {
        for (j = 1; j <= m; j++)
            {
            fscanf(stream, "%f", &in_value);
            data[i][j] = in_value;
            }
         }

    /* Check on (part of) input data.
    for (i = 1; i <= 18; i++) {for (j = 1; j <= 8; j++)  {
        printf("%7.1f", data[i][j]);  }  printf("\n");  }
    */

    symmat = matrix(m, m);  /* Allocation of correlation (etc.) matrix */

   /* Look at analysis option; branch in accordance with this. */

     switch(option)
             {
          case 'R':
          case 'r':
              printf("Analysis of correlations chosen.\n");
              corcol(data, n, m, symmat);

                          /* Output correlation matrix.
                          for (i = 1; i <= m; i++) {
                           for (j = 1; j <= 8; j++)  {
                            printf("%7.4f", symmat[i][j]);  }
                            printf("\n");  }
                          */
              break;
          case 'V':
          case 'v':
              printf("Analysis of variances-covariances chosen.\n");
              covcol(data, n, m, symmat);

                          /* Output variance-covariance matrix.
                          for (i = 1; i <= m; i++) {
                          for (j = 1; j <= 8; j++)  {
                            printf("%7.1f", symmat[i][j]);  }
                            printf("\n");  }
                          */
              break;
          case 'S':
          case 's':
              printf("Analysis of sums-of-squares-cross-products");
              printf(" matrix chosen.\n");
              scpcol(data, n, m, symmat);

                         /* Output SSCP matrix.
                         for (i = 1; i <= m; i++) {
                          for (j = 1; j <= 8; j++)  {
                            printf("%7.1f", symmat[i][j]);  }
                            printf("\n");  }
                         */
              break;
          default:
              printf("Option: %s\n",option);
              printf("For option, please type R, V, or S\n");
              printf("(upper or lower case).\n");
              printf("Exiting to system.\n");
              exit(1);
              break;
          }

/*********************************************************************
    Eigen-reduction
**********************************************************************/

    /* Allocate storage for dummy and new vectors. */
    evals = vector(m);     /* Storage alloc. for vector of eigenvalues */
    interm = vector(m);    /* Storage alloc. for 'intermediate' vector */
    symmat2 = matrix(m, m);  /* Duplicate of correlation (etc.) matrix */
    for (i = 1; i <= m; i++) 
	{
     for (j = 1; j <= m; j++) 
	 {
      symmat2[i][j] = symmat[i][j]; /* Needed below for col. projections */
                             
	 }
                            
	}
    tred2(symmat, m, evals, interm);  /* Triangular decomposition */
    tqli(evals, interm, m, symmat);   /* Reduction of sym. trid. matrix */
    /* evals now contains the eigenvalues,
       columns of symmat now contain the associated eigenvectors. */

     printf("\nEigenvalues:\n");
     for (j = m; j >= 1; j--) 
	 {
       printf("%18.5f\n", evals[j]);		//特征值 
	 }
     printf("\n(Eigenvalues should be strictly positive; limited\n");
     printf("precision machine arithmetic may affect this.\n");
     printf("Eigenvalues are often expressed as cumulative\n");
     printf("percentages, representing the 'percentage variance\n");
     printf("explained' by the associated axis or principal component.)\n");

     printf("\nEigenvectors:\n");
     printf("(First three; their definition in terms of original vbes.)\n");
     for (j = 1; j <= m; j++) 
	 {
       for (i = 1; i <= 3; i++)  
	   {
          printf("%12.4f", symmat[j][m-i+1]); 
	   }
          printf("\n");  
	 }

     /* Form projections of row-points on first three prin. components. */
     /* Store in 'data', overwriting original data. */
     for (i = 1; i <= n; i++) 
	 {
      for (j = 1; j <= m; j++)
	  {
        interm[j] = data[i][j]; 
	  }   /* data[i][j] will be overwritten */
        for (k = 1; k <= 3; k++) 
		{
          data[i][k] = 0.0;
          for (k2 = 1; k2 <= m; k2++)
		  {
            data[i][k] += interm[k2] * symmat[k2][m-k+1]; 
		  }
        }
     }

     printf("\nProjections of row-points on first 3 prin. comps.:\n");
     for (i = 1; i <= n; i++)
	 {
       for (j = 1; j <= 3; j++) 
	   {
          printf("%12.4f", data[i][j]); 
	   }
          printf("\n"); 
	 }

     /* Form projections of col.-points on first three prin. components. */
     /* Store in 'symmat2', overwriting what was stored in this. */
     for (j = 1; j <= m; j++) 
	 {
      for (k = 1; k <= m; k++) 
	  {
        interm[k] = symmat2[j][k];
	  }  /*symmat2[j][k] will be overwritten*/
        for (i = 1; i <= 3; i++) 
		{
          symmat2[j][i] = 0.0;
          for (k2 = 1; k2 <= m; k2++) 
		  {
            symmat2[j][i] += interm[k2] * symmat[k2][m-i+1]; 
		  }
          if (evals[m-i+1] > 0.0005)   /* Guard against zero eigenvalue */
             symmat2[j][i] /= sqrt(evals[m-i+1]);   /* Rescale */
          else
             symmat2[j][i] = 0.0;    /* Standard kludge */
        }
     }

     printf("\nProjections of column-points on first 3 prin. comps.:\n");
     for (j = 1; j <= m; j++) 
	 {
       for (k = 1; k <= 3; k++)  
	   {
          printf("%12.4f", symmat2[j][k]);  
	   }
          printf("\n"); 
	 }

    free_matrix(data, n, m);
    free_matrix(symmat, m, m);
    free_matrix(symmat2, m, m);
    free_vector(evals, m);
    free_vector(interm, m);

}

/**  Correlation matrix: creation  ***********************************/

void corcol(data, n, m, symmat)
float **data, **symmat;
int n, m;
/* Create m * m correlation matrix from given n * m data matrix. */
{
float eps = 0.005;
float x, *mean, *stddev, *vector();
int i, j, j1, j2;

/* Allocate storage for mean and std. dev. vectors */

mean = vector(m);
stddev = vector(m);

/* Determine mean of column vectors of input data matrix */

for (j = 1; j <= m; j++)
    {
    mean[j] = 0.0;
    for (i = 1; i <= n; i++)
        {
        mean[j] += data[i][j];
        }
    mean[j] /= (float)n;
    }

printf("\nMeans of column vectors:\n");
for (j = 1; j <= m; j++)  {
    printf("%7.2f",mean[j]);  }   printf("\n");

/* Determine standard deviations of column vectors of data matrix. */

for (j = 1; j <= m; j++)
    {
    stddev[j] = 0.0;
    for (i = 1; i <= n; i++)
        {
        stddev[j] += (   ( data[i][j] - mean[j] ) *
                         ( data[i][j] - mean[j] )  );
        }
        stddev[j] /= (float)n;
        stddev[j] = sqrt(stddev[j]);
        /* The following in an inelegant but usual way to handle
        near-zero std. dev. values, which below would cause a zero-
        divide. */
        if (stddev[j] <= eps) stddev[j] = 1.0;
    }

printf("\nStandard deviations of columns:\n");
for (j = 1; j <= m; j++) { printf("%7.1f", stddev[j]); }
printf("\n");

/* Center and reduce the column vectors. */

for (i = 1; i <= n; i++)
    {
    for (j = 1; j <= m; j++)
        {
        data[i][j] -= mean[j];
        x = sqrt((float)n);
        x *= stddev[j];
        data[i][j] /= x;
        }
    }

/* Calculate the m * m correlation matrix. */
for (j1 = 1; j1 <= m-1; j1++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区综合亚洲| 国产高清亚洲一区| 色狠狠一区二区三区香蕉| 久久精品一区二区| 国产精品自拍av| 精品久久人人做人人爰| 亚洲美女视频一区| 亚洲一区二区高清| 色综合色综合色综合色综合色综合 | 免费成人性网站| 6080日韩午夜伦伦午夜伦| 亚洲自拍另类综合| 色88888久久久久久影院按摩 | 欧美高清hd18日本| 日韩精品久久久久久| 美女视频网站久久| 日韩女优毛片在线| 国产美女av一区二区三区| 成人国产亚洲欧美成人综合网| 久久精品一区二区三区不卡牛牛| 大胆亚洲人体视频| 亚洲视频香蕉人妖| 日本 国产 欧美色综合| 欧美一区二区视频网站| 久久er精品视频| 久久久久久久精| 成人国产精品免费观看视频| 亚洲三级久久久| 91 com成人网| 韩日av一区二区| 国产精品久久久久久久蜜臀| 色综合中文字幕国产 | 欧美日韩久久一区| 蜜桃一区二区三区在线观看| 精品国产麻豆免费人成网站| 成人福利电影精品一区二区在线观看| 综合久久久久久久| 欧美日韩国产精品成人| 国产综合色视频| 亚洲人吸女人奶水| 91精品国产丝袜白色高跟鞋| 九九在线精品视频| 国产精品不卡在线| 91麻豆精品国产91| 成人国产免费视频| 美女一区二区视频| 国产精品国产三级国产aⅴ入口 | 欧美一区二区三区四区视频| 国产99精品国产| 亚洲韩国一区二区三区| 久久综合色之久久综合| 日本韩国一区二区| 国内精品自线一区二区三区视频| 日韩一区中文字幕| xf在线a精品一区二区视频网站| 91在线国产观看| 免费成人美女在线观看| 中文字幕免费观看一区| 欧美精品自拍偷拍| 91碰在线视频| 国产传媒日韩欧美成人| 石原莉奈在线亚洲三区| 中文字幕成人在线观看| 3751色影院一区二区三区| 9i在线看片成人免费| 精品综合久久久久久8888| 亚洲精品国产无天堂网2021 | 免费在线看成人av| 亚洲精品乱码久久久久久黑人| 精品国产亚洲一区二区三区在线观看| 91搞黄在线观看| 国产69精品久久久久毛片| 久久国产成人午夜av影院| 亚洲无线码一区二区三区| 日韩伦理av电影| 日本一区二区三区在线不卡| 欧美一二区视频| 欧美日韩另类国产亚洲欧美一级| 国产一区二区三区在线观看精品 | 欧美亚洲图片小说| 91视频免费观看| av在线不卡观看免费观看| 久久精品国产精品亚洲红杏| 日韩一区精品视频| 午夜精品福利一区二区蜜股av| 亚洲精品中文在线影院| 国产精品污污网站在线观看| 精品久久久久久最新网址| 欧美一区二区大片| 91精品国产综合久久久久久久久久 | 免费成人在线播放| 男女激情视频一区| 久久成人综合网| 精彩视频一区二区| 久久99国内精品| 亚洲mv大片欧洲mv大片精品| 亚洲小说春色综合另类电影| 一区二区欧美精品| 亚洲一区二区美女| 无吗不卡中文字幕| 日本美女视频一区二区| 日韩精品亚洲一区| 丝袜美腿高跟呻吟高潮一区| 午夜精品久久久久久久| 日韩成人精品视频| 麻豆成人久久精品二区三区红| 久久99精品视频| 国产成人在线网站| 9i在线看片成人免费| 91豆麻精品91久久久久久| 欧美三级乱人伦电影| 日韩视频免费观看高清完整版在线观看 | 国产一区二区在线观看视频| 亚洲欧美综合在线精品| 久久一区二区三区国产精品| 亚洲精品在线电影| 国产日产欧产精品推荐色| 中文字幕制服丝袜一区二区三区 | 亚洲另类中文字| 日本成人在线一区| 国产91丝袜在线播放0| 在线免费观看视频一区| 精品粉嫩aⅴ一区二区三区四区| 一区在线观看免费| 麻豆成人91精品二区三区| 91香蕉视频在线| 久久日韩粉嫩一区二区三区| 亚洲综合小说图片| 国产69精品久久777的优势| 欧美日韩国产三级| 国产精品成人午夜| 黄色小说综合网站| 欧美日韩高清一区二区| 国产精品你懂的在线欣赏| 丝袜美腿高跟呻吟高潮一区| 99国产精品久久| 国产欧美一区二区三区网站 | 亚洲一区二区三区免费视频| 国产传媒欧美日韩成人| 91麻豆精品国产91久久久久| 亚洲美女视频在线| 成人美女视频在线观看| 精品国产电影一区二区| 丝袜亚洲精品中文字幕一区| 日本福利一区二区| 国产精品对白交换视频 | 99国产麻豆精品| 久久欧美中文字幕| 老色鬼精品视频在线观看播放| 在线视频综合导航| 综合精品久久久| 成人激情免费电影网址| 久久久亚洲国产美女国产盗摄| 美女视频免费一区| 91精品国产综合久久久蜜臀粉嫩 | 欧美视频一区二区| 亚洲婷婷在线视频| 99久久99久久综合| 国产精品成人一区二区三区夜夜夜 | 91激情在线视频| 亚洲欧美另类久久久精品| 成人av第一页| 国产精品国产馆在线真实露脸| 国产激情精品久久久第一区二区| 精品国产一区二区三区av性色| 蜜臀av性久久久久蜜臀av麻豆| 欧美人成免费网站| 日韩激情在线观看| 日韩一区二区精品在线观看| 天堂成人国产精品一区| 884aa四虎影成人精品一区| 日本最新不卡在线| 日韩免费观看高清完整版| 美女视频一区二区| 国产亚洲污的网站| 高清国产一区二区| 亚洲男人的天堂av| 欧美欧美欧美欧美首页| 日日夜夜精品视频天天综合网| 这里只有精品免费| 极品瑜伽女神91| 欧美精品一区在线观看| 成人性生交大片免费| ...xxx性欧美| 欧美亚洲动漫另类| 免费人成网站在线观看欧美高清| 欧美岛国在线观看| 国产精品69毛片高清亚洲| 国产精品久久久久久户外露出| 色美美综合视频| 亚洲成人综合网站| 日韩欧美一区电影| 国产成人自拍网| 亚洲国产日产av| 久久视频一区二区| 92精品国产成人观看免费| 三级在线观看一区二区| 国产午夜精品一区二区三区四区| 99精品国产一区二区三区不卡 | 亚洲成年人网站在线观看|