Main Page   Compound List   File List   Compound Members   File Members  

fits_read_image_subset.c

Go to the documentation of this file.
00001 
00027 #include <string.h>
00028 #include <stdio.h>
00029 #include <fitsio.h>
00030 #include <malloc.h>
00031 
00032 #include "mex.h"
00033 #include "matrix.h"
00034 #include "mfitsio.h"
00035 
00046 void
00047 mexFunction (int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
00048 {
00049   int buflen, status, i;
00050   char *filename;
00051   long *fpixels, *lpixels, *lnaxes, *inc;
00052   mfitsio_header *header;
00053   mfitsio_info *info;
00054   mxArray *headerm;
00055   const mxArray *startp, *endp;
00056   double *dataStart, *dataEnd;
00057 
00058   /* Check proper input and output */
00059   if (nrhs != 3)
00060     mexErrMsgTxt ("Three inputs required.");
00061   else if (nlhs > 1)
00062     mexErrMsgTxt ("Too many output arguments.");
00063   else if (!mxIsChar (prhs[0]))
00064     mexErrMsgTxt ("Input must be a string (filename).");
00065 
00066   if (mxGetM (prhs[0]) != 1)
00067     mexErrMsgTxt ("Input must be a row vector string (filename).");
00068 
00069   buflen = (mxGetM (prhs[0]) * mxGetN (prhs[0])) + 1;
00070 
00071   filename = mxCalloc (buflen, sizeof (char));
00072   status = mxGetString (prhs[0], filename, buflen);
00073 
00074   header = mfitsio_read_header (filename);
00075   startp = prhs[1];
00076   endp = prhs[2];
00077 
00079   if (header != 0)
00080   {
00081 
00083     headerm = mfitsio_adapt_fheader (header);
00084     info = mfitsio_read_info (filename);
00085 
00088     mfitsio_check_coordinate(startp, endp, info->naxis, info->naxes);
00089     dataStart = mxGetData(startp);
00090     dataEnd = mxGetData(endp);
00091     fpixels = mfitsio_convert_dbl2long(dataStart, info->naxis);
00092     lpixels = mfitsio_convert_dbl2long(dataEnd, info->naxis);
00093     inc = mfitsio_create_ones_vector(info->naxis);
00094     lnaxes = mfitsio_convert_int2long(info->naxes, info->naxis);
00095     plhs[0] = mfitsio_read_image_impl (filename, info, fpixels, lpixels,
00096                                        lnaxes, inc);
00097     mfitsio_free_header (header);
00098     mfitsio_free_info (info);
00099     MFITSIO_FREE(fpixels);
00100     MFITSIO_FREE(lpixels);
00101     MFITSIO_FREE(inc);
00102     MFITSIO_FREE(lnaxes);
00103   }
00104   else
00105   {
00106     mexErrMsgTxt ("Unable to open FITS file.");
00107   }
00108 
00109   return;
00110 }


Operated by University of California for the National Nuclear Security Administration of the US Department of Energy. Copyright © 2002-2003 UC | Disclaimer/Privacy
This website has been approved for unlimited release with associated LA-UR number LA-UR-03-0949.