MAT (.mat)

Background & Context

    • MATLAB MAT-files.
    • Matrix data format.
    • Native data format of the MATLAB numerical computation software.
    • Stores numerical matrices, Boolean values, or strings.
    • Also stores sparse arrays, nested structures and more.
    • Binary format.
    • Version 7.3 of MAT-files uses HDF5.

Import & Export

  • Import["file.mat"] imports a MAT-file, returning a multidimensional array containing numbers, strings or Boolean values.
  • Import["file.mat",elem] imports the specified element from a MAT-file.
  • The import format can be specified with Import["file", "MAT"] or Import["file",{"MAT",elem,}].
  • Export["file.mat",expr] creates a MAT-file from an array of integers, doubles and complex values.
  • Export["file.mat",{elem1->expr1,elem2->expr2,},"Rules"] uses rules to specify the elements to be exported.
  • See the following reference pages for full general information:
  • Import, Exportimport from or export to a file
    CloudImport, CloudExportimport from or export to a cloud object
    ImportString, ExportStringimport from or export to a string
    ImportByteArray, ExportByteArrayimport from or export to a byte array

Import Elements

  • General Import elements:
  • "Elements" list of elements and options available in this file
    "Rules"full list of rules for each element and option
    "Options"list of rules for options, properties and settings
    "Summary"summary of file size and dimensions
  • Data representation element:
  • "Data"numerical or textual data given as a multidimensional array
    "LabeledData"data given as a list of rules
  • Import and Export use the "Data" element by default.
  • Data descriptor elements:
  • "DataFormat"variable data type
    "Dimensions"dimensions of the array
  • When appropriate, numerical data is imported as SparseArray objects.
  • Meta-information element:
  • "Comments"user comments stored in the file
    "Labels"variable names given as a list of strings
    "Version"version of the MAT specification for the file


  • Import options:
  • "IndeterminateValues"Automaticreplacement values for infinity, NaN, etc.
  • Use "IndeterminateValues" to provide replacement rules for different values. The following settings are supported:
  • vala fixed value val for any indeterminate value
    <|"Nan","Inf","-Inf"|>specific replacements depending on the type indeterminate
  • Export options:
  • CompressionLevelAutomaticcompression level to use
    OverwriteTargetTruewhether to overwrite an existing file
    "Version"Automaticversion of the file format to use
  • Using OverwriteTarget->"Append", new objects may be added to an existing file.
  • Supported versions in export are "4", "5", "7.3".
  • By default, export generates version "5" MAT-files. For variables larger than bytes, a version "7.3" file is generated.


open allclose all

Basic Examples  (3)

This imports a simple MAT-file:

Summary of a MAT-file:

Export a numerical matrix:

Scope  (8)

Import  (1)

List available Import elements

Export  (7)

Export an array of numbers to a MAT-file:

If no variable name is given, the default variable name "Expression1" is used:

Export data with custom variable name:

Export multiple variables to a file. Variable names must be explicitly given:

Export a SparseArray:

Export an array of strings:

Export an array of expressions of possibly different types:

Export an array of associations with consistent keys into a "structure" array:

Export Options  (14)

CompressionLevel  (3)

Export a large numeric array. By default, the data will be compressed (equivalent to level 1):

Export data with no compression:

Compression is not supported in MAT version 4:

"Header"  (3)

By default, an automatic header is created:

Specify a header, which is stored after the MAT version number:

The header can be imported using the "Comments" element:

The header cannot be too long:

OverwriteTarget  (3)

By default, a new file is created for each call to Export:

With OverwriteTargetFalse, existing files will not be overwritten:

To append variables at the end of an existing file, use OverwriteTarget"Append":

A variable being appended to an existing file should have a new name:

"Version"  (5)

By default, Export creates MAT-files Version 5:

Export data to MAT Version 4:

Export data to MAT Version 7.3:

Version can be specified either as a number or a string:

Some data types (e.g. arrays of mixed types) cannot be exported to MAT Version 4: