## LOAD Load Variables From A File

Section: Input/Ouput Functions

### Usage

Loads a set of variables from a file in a machine independent format. The `load` function takes one argument:

      load filename,

or alternately,

      load('filename')

This command is the companion to `save`. It loads the contents of the file generated by `save` back into the current context. Global and persistent variables are also loaded and flagged appropriately. By default, FreeMat assumes that files that end in a `.mat` or `.MAT` extension are MATLAB-formatted files. Also, FreeMat assumes that files that end in `.txt` or `.TXT` are ASCII files. For other filenames, FreeMat first tries to open the file as a FreeMat binary format file (as created by the `save` function). If the file fails to open as a FreeMat binary file, then FreeMat attempts to read it as an ASCII file. You can force FreeMat to assume a particular format for the file by using alternate forms of the `load` command. In particular,

      load -ascii filename

will load the data in file `filename` as an ASCII file (space delimited numeric text) loaded into a single variable in the current workspace with the name `filename` (without the extension). For MATLAB-formatted data files, you can use

      load -mat filename

which forces FreeMat to assume that `filename` is a MAT-file, regardless of the extension on the filename. You can also specify which variables to load from a file (not from an ASCII file - only single 2-D variables can be successfully saved and retrieved from ASCII files) using the additional syntaxes of the `load` command. In particular, you can specify a set of variables to load by name

      load filename Var_1 Var_2 Var_3 ...

where `Var_n` is the name of a variable to load from the file. Alternately, you can use the regular expression syntax

      load filename -regexp expr_1 expr_2 expr_3 ...

where `expr_n` is a regular expression (roughly as expected by `regexp`). Note that a simpler regular expression mechanism is used for this syntax than the full mechanism used by the `regexp` command. Finally, you can use `load` to create a variable containing the contents of the file, instead of automatically inserting the variables into the curent workspace. For this form of `load` you must use the function syntax, and capture the output:

      V = load('arg1','arg2',...)

which returns a structure `V` with one field for each variable retrieved from the file. For ASCII files, `V` is a double precision matrix.

### Example

Here is a simple example of `save`/`load`. First, we save some variables to a file.

    --> D = {1,5,'hello'};
    --> s = 'test string';
    --> x = randn(512,1);
    --> z = zeros(512);
    --> who
      Variable Name       Type   Flags             Size
                  D      cell                    [1 3]
                  s      char                    [1 11]
                  x    double                    [512 1]
                  z    double                    [512 512]
    --> save loadsave.dat

Next, we clear the variables, and then load them back from the file.

    --> clear D s x z
    --> who
      Variable Name       Type   Flags             Size
                ans    double                    [0 0]
    --> load loadsave.dat
    --> who
      Variable Name       Type   Flags             Size
                  D      cell                    [1 3]
                ans    double                    [0 0]
                  s      char                    [1 11]
                  x    double                    [512 1]
                  z    double                    [512 512]