Changeset 11762
- Timestamp:
- 03/20/12 16:53:42 (13 years ago)
- Location:
- issm/trunk-jpl/src/c/toolkits/issm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp
r11733 r11762 32 32 this->M=pM; 33 33 this->N=pN; 34 this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 34 this->matrix=NULL; 35 if(M*N) this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 35 36 } 36 37 /*}}}*/ … … 40 41 this->M=pM; 41 42 this->N=pN; 42 this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 43 this->matrix=NULL; 44 if(M*N) this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 43 45 } 44 46 /*}}}*/ … … 50 52 this->M=pM; 51 53 this->N=pN; 52 this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 53 memcpy(this->matrix,serial_mat,pM*pN*sizeof(double)); 54 this->matrix=NULL; 55 if(M*N){ 56 this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 57 memcpy(this->matrix,serial_mat,pM*pN*sizeof(double)); 58 } 54 59 55 60 } … … 60 65 this->M=pM; 61 66 this->N=pN; 62 this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 67 this->matrix=NULL; 68 if(M*N)this->matrix=(double*)xcalloc(pM*pN,sizeof(double)); 63 69 } 64 70 /*}}}*/ … … 91 97 mxArray* SeqMat::ToMatlabMatrix(void){ 92 98 99 /*Intermediary: */ 93 100 double* buffer=NULL; 94 101 mxArray* pfield=NULL; 102 103 /*output: */ 95 104 mxArray* dataref=NULL; 96 105 97 106 /*copy vector into a new buffer: */ 98 buffer=(double*)xmalloc(this->M*this->N*sizeof(double)); 99 memcpy(buffer,this->matrix,M*N*sizeof(double)); 100 101 dataref = mxCreateDoubleMatrix(0,0,mxREAL); 102 mxSetM(dataref,this->M); 103 mxSetN(dataref,this->N); 104 mxSetPr(dataref,buffer); 105 107 if(this->M*this->N){ 108 buffer=(double*)xmalloc(this->M*this->N*sizeof(double)); 109 memcpy(buffer,this->matrix,M*N*sizeof(double)); 110 111 pfield=mxCreateDoubleMatrix(0,0,mxREAL); 112 mxSetM(pfield,this->N); 113 mxSetN(pfield,this->M); 114 mxSetPr(pfield,buffer); 115 116 //transpose the matrix, written directly to matlab! from C to matlab. 117 mexCallMATLAB(1,&dataref, 1, &pfield, "transpose"); 118 } 119 else dataref=mxCreateDoubleMatrix(0,0,mxREAL); 106 120 107 121 /*do not erase buffer!: */ … … 109 123 110 124 } 125 126 127 128 111 129 /*}}}*/ 112 130 /*FUNCTION MatlabMatrixToSeqMat{{{1*/ -
issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp
r11733 r11762 30 30 31 31 this->M=pM; 32 this->vector=NULL; 32 33 if(this->M) this->vector=(double*)xcalloc(pM,sizeof(double)); 33 else this->vector=NULL;34 34 } 35 35 /*}}}*/ … … 40 40 41 41 this->M=pM; 42 this->vector=(double*)xcalloc(pM,sizeof(double)); 43 memcpy(this->vector,buffer,pM*sizeof(double)); 42 this->vector=NULL; 43 if(this->M){ 44 this->vector=(double*)xcalloc(pM,sizeof(double)); 45 memcpy(this->vector,buffer,pM*sizeof(double)); 46 } 44 47 } 45 48 /*}}}*/ … … 72 75 73 76 /*copy vector into a new buffer: */ 74 buffer=(double*)xmalloc(this->M*sizeof(double)); 75 memcpy(buffer,vector,M*sizeof(double)); 76 77 dataref = mxCreateDoubleMatrix(0,0,mxREAL); 78 mxSetM(dataref,this->M); 79 mxSetN(dataref,1); 80 mxSetPr(dataref,buffer); 77 if(this->M){ 78 buffer=(double*)xmalloc(this->M*sizeof(double)); 79 memcpy(buffer,vector,M*sizeof(double)); 80 81 dataref = mxCreateDoubleMatrix(0,0,mxREAL); 82 mxSetM(dataref,this->M); 83 mxSetN(dataref,1); 84 mxSetPr(dataref,buffer); 85 } 86 else dataref = mxCreateDoubleMatrix(0,0,mxREAL); 81 87 82 88
Note:
See TracChangeset
for help on using the changeset viewer.