Be the first to rate this file! 6 Downloads (last 30 days) File Size: 1.49 KB File ID: #40712

Convert from a structure of arrays into an array of structures

by

 

converts from a structure, where each field contains an Nx1 array, into an 1xN array of structures

| Watch this File

File Information
Description

Converts from a structure, where each field contains an Nx1 array, into an 1xN array of structures, where each field contains 1 value.

I decided to create and share this after not finding a readily available answer on the internet; though I suspect SOMEONE out there has already solved this issue.

USAGE:
    S = structofarrays2arrayofstructs(A) assumes that A is a struct, with each field
       containing Nx1 (columns) of values. (theoretically NxM values, where M may vary). This results in an Nx1 array of
       structs, each containing 1 (or M) values.
     
  Example
    >> A.flower={'Daisy';'Rose';'Violet'};
    >> A.color={'white';'red';'violet'};
   
    >> S = structofarrays2arrayofstructs(A)
   
    S =
       1x3 struct array with fields:
           flower
           color
         
    >> S(2)
    ans =
         flower: 'Rose'
          color: 'red'

Note, Any cells it encounters are unwrapped.

In a test, with 6 fields, each with 377670x1 values (mixed, Cells of chars and arrays of Double), it took ~20 seconds to convert.

MATLAB release MATLAB 7.13 (R2011b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.

Contact us