Doxygen Source Code Documentation
mri_complex_arith.c File Reference
#include "mrilib.h"Go to the source code of this file.
Functions | |
| MRI_IMAGE * | mri_multiply_complex (int mode, MRI_IMAGE *f, MRI_IMAGE *g) |
| MRI_IMAGE * | mri_complex_phase (MRI_IMAGE *im) |
| MRI_IMAGE * | mri_complex_abs (MRI_IMAGE *im) |
Function Documentation
|
|
Definition at line 82 of file mri_complex_arith.c. References MRI_DATA::complex_data, CSQR, MRI_DATA::float_data, MRI_IMAGE::im, MRI_IMAGE::kind, MRI_COPY_AUX, MRI_FATAL_ERROR, mri_new_conforming, and MRI_IMAGE::nvox.
00083 {
00084 register int ii , npix ;
00085 MRI_IMAGE *newImg ;
00086
00087 if( im->kind != MRI_complex ){
00088 fprintf( stderr , "mri_complex_abs illegal type!\n" ) ;
00089 MRI_FATAL_ERROR ;
00090 }
00091
00092 npix = im->nvox ;
00093 newImg = mri_new_conforming( im , MRI_float ) ;
00094 MRI_COPY_AUX( newImg , im ) ;
00095
00096 for( ii=0 ; ii < npix ; ii++ )
00097 newImg->im.float_data[ii] = sqrt( CSQR( im->im.complex_data[ii] ) ) ;
00098
00099 return newImg ;
00100 }
|
|
|
Definition at line 59 of file mri_complex_arith.c. References MRI_DATA::complex_data, MRI_DATA::float_data, complex::i, MRI_IMAGE::im, MRI_IMAGE::kind, MRI_COPY_AUX, MRI_FATAL_ERROR, mri_new_conforming, MRI_IMAGE::nvox, and complex::r.
00060 {
00061 register int ii , npix ;
00062 MRI_IMAGE *newImg ;
00063
00064 if( im->kind != MRI_complex ){
00065 fprintf( stderr , "mri_complex_phase illegal image type!\n" ) ;
00066 MRI_FATAL_ERROR ;
00067 }
00068
00069 npix = im->nvox ;
00070 newImg = mri_new_conforming( im , MRI_float ) ;
00071 MRI_COPY_AUX( newImg , im ) ;
00072
00073 for( ii=0 ; ii < npix ; ii++ )
00074 newImg->im.float_data[ii] =
00075 atan2( im->im.complex_data[ii].i , im->im.complex_data[ii].r ) ;
00076
00077 return newImg ;
00078 }
|
|
||||||||||||||||
|
Definition at line 16 of file mri_complex_arith.c. References CJMULT, CMULT, MRI_DATA::complex_data, MRI_IMAGE::im, MRI_IMAGE::kind, MRI_COPY_AUX, MRI_FATAL_ERROR, mri_new_conforming, and MRI_IMAGE::nvox.
00017 {
00018 register int ii , npix ;
00019 MRI_IMAGE *newImg ;
00020
00021 if( f->nvox != g->nvox ){
00022 fprintf( stderr , "mri_multiply_complex shapes imcompatible!\n" ) ;
00023 MRI_FATAL_ERROR ;
00024 }
00025
00026 if( f->kind != MRI_complex || g->kind != MRI_complex ){
00027 fprintf( stderr , "mri_multiply_complex illegal image type!\n" ) ;
00028 MRI_FATAL_ERROR ;
00029 }
00030
00031 newImg = mri_new_conforming( f , MRI_complex ) ;
00032 npix = f->nvox ;
00033 MRI_COPY_AUX( newImg , f ) ;
00034
00035 switch( mode ){
00036 case 0:
00037 for( ii=0 ; ii < npix ; ii++ ){
00038 newImg->im.complex_data[ii] =
00039 CMULT( f->im.complex_data[ii] , g->im.complex_data[ii] ) ;
00040 }
00041 break ;
00042
00043 case 1:
00044 for( ii=0 ; ii < npix ; ii++ ){
00045 newImg->im.complex_data[ii] =
00046 CJMULT( f->im.complex_data[ii] , g->im.complex_data[ii] ) ;
00047 }
00048 break ;
00049
00050 default:
00051 fprintf( stderr , "mri_multiply_complex illegal mode %d\n" , mode ) ;
00052 MRI_FATAL_ERROR ;
00053 }
00054 return newImg ;
00055 }
|