For example:

For[n = 0, n < 100, n = n + 1,
  ... ...   
 M=Append[M, Resultmatrix ]; 
 (*Resultmatrix is the intermediate reslut 4X4 matrix*)
Export["data.mat", M]

But when loading data.mat in Matlab, I find that M splits into multiple variables with names like Expression1, Expression2, Expression3 .... I also tried XLS format, but each 4x4 matrix in the list of matrices appears in an individual worksheet. So my question is how can I put M in a single variable, thus I could manipulate it.

  • $\begingroup$ You can create the list in one go: m = Array[#1 - 1 &, {100, 4, 4}] $\endgroup$ – ssch Jan 19 '13 at 12:48
  • $\begingroup$ You could export Flatten[m] and then use reshape(Expression,[100 4 4]) (not sure about syntax) in the other software. $\endgroup$ – b.gates.you.know.what Jan 19 '13 at 12:53
  • $\begingroup$ thanks ssch and b.gatessucks ,M is not a constant matrix, posted is just an example, Flatten[m] does work, but I found reshape changed the structure of M. $\endgroup$ – novice Jan 19 '13 at 13:18
  • $\begingroup$ @user5463 The structure is different because one uses row major ordering and the other column major ordering to store the arrays. See this question and the answers there for a way to convert (the answers deal with converting in mma... you can do something similar in matlab) $\endgroup$ – rm -rf Jan 19 '13 at 17:13
  • $\begingroup$ also relevant: mathematica.stackexchange.com/questions/6837/… $\endgroup$ – s0rce Jan 20 '13 at 3:25

See the link for import and export examples for mat files also related question

Below examples work:

Export["file.mat", {"Var1" -> {{1, 2, 3}, {3, 4, 5}}, "Var2" -> {{4, 5, 6}}}, "LabeledData"]

So, use labels and Labeled data options.


Use the hdf5 format instead if you have too many dimensions. Saves a lot of pain and both Matlab and Mathematica support the hdf5 format.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.