/*****************************************************************************
Major portions of this software are copyrighted by the Medical College
of Wisconsin, 1994-2000, and are released under the Gnu General Public
License, Version 2. See the file README.Copyright for details.
******************************************************************************/
#include "mrilib.h"
int main( int argc , char * argv[] )
{
MRI_IMAGE * inim ;
int ii , jj , nx,ny , nopt;
float * iar ;
double sq ;
/*-- help? --*/
if( argc < 2 || strcmp(argv[1],"-help") == 0 ){
printf("Usage: 1dnorm infile outfile\n"
"where infile is an AFNI *.1D file (ASCII list of numbers arranged\n"
"in columns); outfile will be a similar file, with each column being\n"
"L2 normalized.\n"
) ;
exit(0) ;
}
machdep() ;
nopt = 1 ;
if( nopt+1 >= argc ){
fprintf(stderr,"** Need input and output filenames!\n");exit(1);
}
if( argc > nopt+1 && !THD_filename_ok(argv[nopt+1]) ){
fprintf(stderr,"** Illegal output filename!\n"); exit(1);
}
if( argc > nopt+1 && strcmp(argv[nopt+1],"-") != 0 && THD_is_file(argv[nopt+1]) ){
fprintf(stderr,"** Output file already exists!\n"); exit(1);
}
/* read input file */
inim = mri_read_1D( argv[nopt] ) ;
if( inim == NULL ){
fprintf(stderr,"** Can't read input file!\n"); exit(1);
}
nx = inim->nx ; ny = inim->ny ; iar = MRI_FLOAT_PTR(inim) ;
for( jj=0 ; jj < ny ; jj++ ){
sq = 0.0 ;
for( ii=0 ; ii < nx ; ii++ ) sq += SQR(iar[ii+jj*nx]) ;
if( sq > 0.0 ){
sq = 1.0 / sq ;
for( ii=0 ; ii < nx ; ii++ ) iar[ii+jj*nx] *= sq ;
}
}
mri_write_1D( (argc > nopt+1) ? argv[nopt+1] : "-" , inim ) ;
exit(0) ;
}
syntax highlighted by Code2HTML, v. 0.9.1