Robochameleon  v1.0
Functions
catstruct.m File Reference

Concatenate or merge structures with different fieldnames. More...

Go to the source code of this file.

Functions

function catstruct (in varargin)
 Concatenate or merge structures with different fieldnames. More...
 

Detailed Description

Concatenate or merge structures with different fieldnames.

X = CATSTRUCT(S1,S2,S3,...) merges the structures S1, S2, S3 ... into one new structure X. X contains all fields present in the various structures. An example:

A.name = 'Me' ;
B.income = 99999 ;
X = catstruct(A,B)
% -> X.name = 'Me' ;
% X.income = 99999 ;

If a fieldname is not unique among structures (i.e., a fieldname is present in more than one structure), only the value from the last structure with this field is used. In this case, the fields are alphabetically sorted. A warning is issued as well. An axample:

S1.name = 'Me' ;
S2.age = 20 ; S3.age = 30 ; S4.age = 40 ;
S5.honest = false ;
Y = catstruct(S1,S2,S3,S4,S5) % use value from S4

The inputs can be array of structures. All structures should have the same size. An example:

C(1).bb = 1 ; C(2).bb = 2 ;
D(1).aa = 3 ; D(2).aa = 4 ;
CD = catstruct(C,D) % CD is a 1x2 structure array with fields bb and aa

The last input can be the string 'sorted'. In this case, CATSTRUCT(S1,S2, ..., 'sorted') will sort the fieldnames alphabetically. To sort the fieldnames of a structure A, you could use CATSTRUCT(A,'sorted') but I recommend ORDERFIELDS for doing that.

When there is nothing to concatenate, the result will be an empty struct (0x0 struct array with no fields).

Notes

  1. To concatenate similar arrays of structs, you can use simple concatenation:
    A = dir('*.mat') ; B = dir('*.m') ; C = [A ; B] ;
  2. This function relies on unique. Matlab changed the behavior of its set functions since 2013a, so this might cause some backward compatibility issues when dulpicated fieldnames are found.
See also
CAT, STRUCT, FIELDNAMES, STRUCT2CELL, ORDERFIELDS

for Matlab R13 and up, tested in R2011a and up

Version
4.0 (dec 2013)
Author
Jos van der Geest : jos@j.nosp@m.asen.nosp@m..nl

Definition in file catstruct.m.

Function Documentation

function catstruct ( in  varargin)

Concatenate or merge structures with different fieldnames.

Parameters
S1,S2,etcStructures to be concatenated
Return values
ACombined structure