Changeset 13378
- Timestamp:
- 09/15/12 11:29:55 (13 years ago)
- Location:
- issm/trunk-jpl/src/c/matlab/io
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp
r13375 r13378 61 61 void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){ 62 62 63 double* outmatrix=NULL;64 int outmatrix_numel,outmatrix_ndims;65 int * outmatrix_size=NULL;63 int outmatrix_numel,outmatrix_ndims; 64 double *outmatrix = NULL; 65 int *outmatrix_size = NULL; 66 66 67 67 if(mxIsEmpty(dataref) ){ 68 68 /*Nothing to pick up. Just initialize matrix pointer to NULL: */ 69 outmatrix_numel =0;70 outmatrix_ndims =0;71 outmatrix_size =NULL;72 outmatrix =NULL;69 outmatrix_numel = 0; 70 outmatrix_ndims = 0; 71 outmatrix_size = NULL; 72 outmatrix = NULL; 73 73 } 74 74 else if( mxIsClass(dataref,"double") || … … 79 79 80 80 /*Check dataref is not pointing to NaN: */ 81 if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetNumberOfElements(dataref)==1)){82 outmatrix_numel =0;83 outmatrix_ndims =0;84 outmatrix_size =NULL;85 outmatrix =NULL;81 if (mxIsNaN(*(mxGetPr(dataref))) && (mxGetNumberOfElements(dataref)==1)){ 82 outmatrix_numel = 0; 83 outmatrix_ndims = 0; 84 outmatrix_size = NULL; 85 outmatrix = NULL; 86 86 } 87 87 else{ -
issm/trunk-jpl/src/c/matlab/io/MatlabNArrayToNArray.cpp
r12595 r13378 28 28 29 29 /*matlab indices: */ 30 mwIndex* ir=NULL; 31 mwIndex* jc=NULL; 32 double* pr=NULL; 33 int count; 34 int nnz; 35 int nz; 30 mwIndex *ir = NULL; 31 mwIndex *jc = NULL; 32 double *pr = NULL; 33 int count; 36 34 37 35 /*get Matlab matrix information: */ … … 46 44 47 45 /*Dealing with sparse matrix: recover size first: */ 48 rows=mxGetM(mxmatrix); 49 cols=mxGetN(mxmatrix); 50 nnz=mxGetNzmax(mxmatrix); 51 nz=(int)((double)nnz/(double)rows); 46 rows = mxGetM(mxmatrix); 47 cols = mxGetN(mxmatrix); 52 48 53 49 matrix=xNewZeroInit<double>(rows*cols); 54 50 55 51 /*Now, get ir,jc and pr: */ 56 ir =mxGetIr(mxmatrix);57 jc =mxGetJc(mxmatrix);58 pr =mxGetPr(mxmatrix);52 ir = mxGetIr(mxmatrix); 53 jc = mxGetJc(mxmatrix); 54 pr = mxGetPr(mxmatrix); 59 55 60 56 /*Now, start inserting data into double* matrix: */ … … 79 75 for(i=0;i<numel;i++){ 80 76 ColumnWiseDimsFromIndex(dims,i,size,ndims); 81 j =IndexFromRowWiseDims(dims,size,ndims);82 *(matrix+j)=*(mxmatrix_ptr+i);77 j = IndexFromRowWiseDims(dims,size,ndims); 78 matrix[j]=(double)mxmatrix_ptr[i]; 83 79 } 84 80 xDelete<int>(dims); 85 86 81 } 87 82 88 83 /*Assign output pointer: */ 89 *pmatrix =matrix;90 *pmatrix_numel =numel;91 *pmatrix_ndims =ndims;92 *pmatrix_size =size;84 *pmatrix = matrix; 85 *pmatrix_numel = numel; 86 *pmatrix_ndims = ndims; 87 *pmatrix_size = size; 93 88 94 89 return 1; … … 108 103 109 104 /*matlab indices: */ 110 mwIndex* ir=NULL; 111 mwIndex* jc=NULL; 112 bool* pm=NULL; 113 int count; 114 int nnz; 115 int nz; 105 mwIndex *ir = NULL; 106 mwIndex *jc = NULL; 107 bool *pm = NULL; 108 int count; 116 109 117 110 /*get Matlab matrix information: */ 118 numel =mxGetNumberOfElements(mxmatrix);119 ndims =mxGetNumberOfDimensions(mxmatrix);120 ipt =mxGetDimensions(mxmatrix);121 size =xNew<int>(ndims);111 numel = mxGetNumberOfElements(mxmatrix); 112 ndims = mxGetNumberOfDimensions(mxmatrix); 113 ipt = mxGetDimensions(mxmatrix); 114 size = xNew<int>(ndims); 122 115 for (i=0;i<ndims;i++) size[i]=(int)ipt[i]; 123 116 … … 128 121 rows=mxGetM(mxmatrix); 129 122 cols=mxGetN(mxmatrix); 130 nnz=mxGetNzmax(mxmatrix);131 nz=(int)((double)nnz/(double)rows);132 133 123 matrix=xNewZeroInit<bool>(rows*cols); 134 124 … … 142 132 for(i=0;i<cols;i++){ 143 133 for(j=0;j<(jc[i+1]-jc[i]);j++){ 144 *(matrix+rows*ir[count]+i)=pm[count];134 matrix[rows*ir[count]+i]=pm[count]; 145 135 count++; 146 136 } 147 137 } 148 149 138 } 150 139 else{ … … 159 148 ColumnWiseDimsFromIndex(dims,i,size,ndims); 160 149 j=IndexFromRowWiseDims(dims,size,ndims); 161 *(matrix+j)=(bool)*(mxmatrix_ptr+i);150 matrix[j]=(bool)mxmatrix_ptr[i]; 162 151 } 163 152 xDelete<int>(dims); … … 165 154 166 155 /*Assign output pointer: */ 167 *pmatrix =matrix;168 *pmatrix_numel =numel;169 *pmatrix_ndims =ndims;170 *pmatrix_size =size;156 *pmatrix = matrix; 157 *pmatrix_numel = numel; 158 *pmatrix_ndims = ndims; 159 *pmatrix_size = size; 171 160 172 161 return 1; … … 190 179 char *pm = NULL; 191 180 int count; 192 int nnz;193 int nz;194 181 195 182 /*get Matlab matrix information: */ 196 numel =mxGetNumberOfElements(mxmatrix);197 ndims =mxGetNumberOfDimensions(mxmatrix);198 ipt =mxGetDimensions(mxmatrix);199 size =xNew<int>(ndims);183 numel = mxGetNumberOfElements(mxmatrix); 184 ndims = mxGetNumberOfDimensions(mxmatrix); 185 ipt = mxGetDimensions(mxmatrix); 186 size = xNew<int>(ndims); 200 187 for (i=0;i<ndims;i++) size[i]=(int)ipt[i]; 201 188 … … 204 191 205 192 /*Dealing with sparse matrix: recover size first: */ 206 rows=mxGetM(mxmatrix); 207 cols=mxGetN(mxmatrix); 208 nnz=mxGetNzmax(mxmatrix); 209 nz=(int)((double)nnz/(double)rows); 210 193 rows = mxGetM(mxmatrix); 194 cols = mxGetN(mxmatrix); 211 195 matrix=xNew<char>(rows*cols); 212 196 213 197 /*Now, get ir,jc and pm: */ 214 ir =mxGetIr(mxmatrix);215 jc =mxGetJc(mxmatrix);216 pm =(char*)mxGetData(mxmatrix);198 ir = mxGetIr(mxmatrix); 199 jc = mxGetJc(mxmatrix); 200 pm = (char*)mxGetData(mxmatrix); 217 201 218 202 /*Now, start inserting data into char* matrix: */ … … 220 204 for(i=0;i<cols;i++){ 221 205 for(j=0;j<(jc[i+1]-jc[i]);j++){ 222 *(matrix+rows*ir[count]+i)=(char)pm[count];206 matrix[rows*ir[count]+i]=(char)pm[count]; 223 207 count++; 224 208 } 225 209 } 226 227 210 } 228 211 else{ 229 230 212 /*Dealing with dense matrix: recover pointer and size: */ 231 213 mxmatrix_ptr=mxGetChars(mxmatrix); … … 261 243 262 244 /*Assign output pointer: */ 263 *pmatrix =matrix;264 *pmatrix_numel =numel;265 *pmatrix_ndims =ndims;266 *pmatrix_size =size;245 *pmatrix = matrix; 246 *pmatrix_numel = numel; 247 *pmatrix_ndims = ndims; 248 *pmatrix_size = size; 267 249 268 250 return 1;
Note:
See TracChangeset
for help on using the changeset viewer.