Doxygen Source Code Documentation
1dnorm.c File Reference
#include "mrilib.h"
Go to the source code of this file.
Functions | |
int | main (int argc, char *argv[]) |
Function Documentation
|
convert three sub-briks to a raw dataset with consecutive triplets Definition at line 9 of file 1dnorm.c. References argc, machdep(), MRI_FLOAT_PTR, mri_read_1D(), mri_write_1D(), MRI_IMAGE::nx, MRI_IMAGE::ny, SQR, THD_filename_ok(), and THD_is_file().
00010 { 00011 MRI_IMAGE * inim ; 00012 int ii , jj , nx,ny , nopt; 00013 float * iar ; 00014 double sq ; 00015 00016 /*-- help? --*/ 00017 00018 if( argc < 2 || strcmp(argv[1],"-help") == 0 ){ 00019 printf("Usage: 1dnorm infile outfile\n" 00020 "where infile is an AFNI *.1D file (ASCII list of numbers arranged\n" 00021 "in columns); outfile will be a similar file, with each column being\n" 00022 "L2 normalized.\n" 00023 ) ; 00024 exit(0) ; 00025 } 00026 00027 machdep() ; 00028 00029 nopt = 1 ; 00030 if( nopt+1 >= argc ){ 00031 fprintf(stderr,"** Need input and output filenames!\n");exit(1); 00032 } 00033 00034 if( argc > nopt+1 && !THD_filename_ok(argv[nopt+1]) ){ 00035 fprintf(stderr,"** Illegal output filename!\n"); exit(1); 00036 } 00037 if( argc > nopt+1 && strcmp(argv[nopt+1],"-") != 0 && THD_is_file(argv[nopt+1]) ){ 00038 fprintf(stderr,"** Output file already exists!\n"); exit(1); 00039 } 00040 00041 /* read input file */ 00042 00043 inim = mri_read_1D( argv[nopt] ) ; 00044 if( inim == NULL ){ 00045 fprintf(stderr,"** Can't read input file!\n"); exit(1); 00046 } 00047 00048 nx = inim->nx ; ny = inim->ny ; iar = MRI_FLOAT_PTR(inim) ; 00049 00050 for( jj=0 ; jj < ny ; jj++ ){ 00051 sq = 0.0 ; 00052 for( ii=0 ; ii < nx ; ii++ ) sq += SQR(iar[ii+jj*nx]) ; 00053 if( sq > 0.0 ){ 00054 sq = 1.0 / sq ; 00055 for( ii=0 ; ii < nx ; ii++ ) iar[ii+jj*nx] *= sq ; 00056 } 00057 } 00058 00059 mri_write_1D( (argc > nopt+1) ? argv[nopt+1] : "-" , inim ) ; 00060 exit(0) ; 00061 } |