No BSD License  

Highlights from
Map fields of a structure to output variables

Be the first to rate this file! 7 Downloads (last 30 days) File Size: 899 Bytes File ID: #23254

Map fields of a structure to output variables

by

 

11 Mar 2009 (Updated )

The program assigns each field of a structure into output arguments.

| Watch this File

File Information
Description

This is made in response to one of the comments in:
http://blogs.mathworks.com/loren/2008/01/24/deal-or-no-deal/

The program assigns each field of a structure into output arguments.

    s =
        a: 1
        b: [1 2 4]
        c: [5x2 double]
        d: 'test'
        e: {[3]}

    >> [a b c d e]=struct2vars(s)

    a =
         1

    b =
         1 2 4

    c =
        0.8147 0.0975
        0.9058 0.2785
        0.1270 0.5469
        0.9134 0.9575
        0.6324 0.9649

    d =
    test

    e =
        [3]

A even better usage if you're trying to dump all your struct into the current workspace:
T=fieldnames(S);
[T{:}]=struct2vars(S);

MATLAB release MATLAB 7.5 (R2007b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (2)
15 Mar 2009 Hoi Wong

Thanks jos for the alternative approach that use deal(). The reason that I made this wrapper is to avoid using deal() and make the code self-documenting.

I wish Mathworks can consider allowing syntaxes like [a,b,c]=(struct2cell(S)){:}, then my submission has no reason to be here. :)

12 Mar 2009 Jos (10584)

A superfluous combination of two basic ML commands. Simply using
C = struct2cell(S) ; [a,b,c] = deal(C{:}) ; in your code is clear enough.

Updates
11 Mar 2009

Modified tag to be more sensible. I mistakenly tagged it with a URL

30 Mar 2009

Added this usage case in comments file:

T=fieldnames(S);
[T{:}]=struct2vars(S);

Contact us