File Exchange Pick of the Week

Our best user submissions

Converting variables to structures, and vice versa

Jiro's pick this week is v2struct by Adi Navve.

I have a special liking for convenience/utility functions, because they make my life easier. For example, here's something that many users have probably learned to do early on:

  plot(x, y, 'ro:')

Did you know that plot is a high-level, convenience function for a much more flexible, low-level function line?

  line(x, y, 'Color', 'r', 'Marker', 'o', 'LineStyle', ':')

Adi's v2struct is a function that makes converting between structures and individual variables easier.

Variables to a Structure

Suppose you have a bunch of variables that you want to combine into a single structure:

aString = 'August 5, 2011';
aScalar = pi;
aVector = rand(1, 5);

v2struct automatically uses the names of the variables as the field names:

s = v2struct(aString, aScalar, aVector)
s = 
    aString: 'August 5, 2011'
    aScalar: 3.1416
    aVector: [0.8407 0.2543 0.8143 0.2435 0.9293]

Structure to Variables

The function works the other way also. Suppose you have a structure like this:

s2 = struct('var1', 1, 'var2', [1 2 3], 'var3', 'hello')
s2 = 
    var1: 1
    var2: [1 2 3]
    var3: 'hello'

You can create variables from the fields of the structure:

whos var*
  Name      Size            Bytes  Class     Attributes

  var1      1x1                 8  double              
  var2      1x3                24  double              
  var3      1x5                10  char                

In addition to these basic uses, v2struct provides advanced functionalities, such as

  • creating structures with field names different from variable names
  • updating fields of an existing structure
  • extracting only specific fields of a structure
  • extracting fields with a different variable name

What I also like about Adi's function is that there is a very extensive help section with lots of examples. I can see he has put in a lot of effort in making this easy to use.


Let us know what you think here or leave a comment for Adi.

Published with MATLAB® 7.12

  • print


To leave a comment, please click here to sign in to your MathWorks Account or create a new one.