uneval(var_name, value, return_cell_array)

Uneval performs the inverse operation of eval('expression').
Updated 17 Jul 2015

View License

This function converts a MATLAB variable into a text string, which when evaluated, produces the original variable having identical:
data types (single, double, int8, ...)
cell arrays
multi-dimensional arrays
nested struct's of cell arrays of structs of ...
For floating point values, enough significant digits are printed to preserve machine precision.
Contrived example usage:
settings = load('some_data.mat');
string = uneval('settings2', settings)
disp(isequalwithequalnans(settings, settings2));

This function probably does not work with handles to nested functions, figure handles, or java & OOP objects...

Cite As

David Holl (2024). uneval(var_name, value, return_cell_array) (https://www.mathworks.com/matlabcentral/fileexchange/19953-uneval-var_name-value-return_cell_array), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2007a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Find more on Characters and Strings in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

Included workaround for large int64 and uint64 values that MATLAB may accidentally truncate via intermediate casts to double precision.

Replaced cellstr2string in favor of "the_string = sprintf('%s\n', the_string{:});"

Fixed missing "end".

Included missing cell_ind2sub subroutine.

The original package was missing a misnamed subroutine called CELL_IND2SUB.