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 } |