Index: /issm/trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp	(revision 12045)
+++ /issm/trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp	(revision 12046)
@@ -28,5 +28,5 @@
 		for(int i=0;i<M;i++){
 			for(int j=0;j<N;j++){
-				tmatrix[i*N+j]=matrix[j*M+i];
+				tmatrix[j*M+i]=matrix[i*N+j];
 			}
 		}
@@ -49,10 +49,9 @@
 
 	if(matrix){
-
 		/*convert to double matrix using Matlab's memory manager*/
 		double* tmatrix=(double*)mxMalloc(M*N*sizeof(double));
 		for(int i=0;i<M;i++){
 			for(int j=0;j<N;j++){
-				tmatrix[i*N+j]=(double)matrix[j*M+i];
+				tmatrix[j*M+i]=(double)matrix[i*N+j];
 			}
 		}
@@ -61,5 +60,4 @@
 		mxSetN(dataref,(mwSize)N);
 		mxSetPr(dataref,(double*)tmatrix);
-
 	}
 	else{
@@ -238,7 +236,7 @@
 		/*Now transpose the matrix and allocate with Matlab's memory manager: */
 		tmatrix_ptr=(double*)mxMalloc(rows*cols*sizeof(double));
-		for(i=0;i<cols;i++){
-			for(j=0;j<rows;j++){
-				tmatrix_ptr[i*rows+j]=matrix_ptr[j*cols+i];
+		for(i=0;i<rows;i++){
+			for(j=0;j<cols;j++){
+				tmatrix_ptr[j*rows+i]=matrix_ptr[i*cols+j];
 			}
 		}
@@ -299,27 +297,14 @@
 /*Toolkit*/
 /*FUNCTION SetStructureField{{{1*/
-void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer){
-
-	/*Intermediary*/
-	int      i1,i2;
-	mxArray *pfield  = NULL;
-
-	/*Copy field using Matlab's API and transpose*/
-	double*  fieldcopy=NULL;
-	if (fieldrows*fieldcols){
-		fieldcopy=(double*)mxMalloc(fieldrows*fieldcols*sizeof(double));
-		for(i1=0;i1<fieldrows;i1++){
-			for(i2=0;i2<fieldcols;i2++){
-				fieldcopy[fieldcols*i1+i2]=fieldpointer[fieldrows*i2+i1];
-			}
-		}
-	}
-
-	/*Set matlab field*/
-	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
-	mxSetM(pfield,fieldcols);
-	mxSetN(pfield,fieldrows);
-	mxSetPr(pfield,fieldcopy);
-	mxSetField(dataref,0,fieldname,pfield);
-}
-/*}}}*/
+void SetStructureField(mxArray* dataref,const char* fieldname,int M,int N,double* fieldpointer){
+
+	mxArray* field = NULL;
+
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,0,fieldname,field);
+}
+/*}}}*/
