Code covered by the BSD License  

Highlights from
CO2gui - lab control and automation

CO2gui - lab control and automation



06 Jan 2010 (Updated )

Software used for controlling and data logging lab equipment.

function output = catstructs(varargin)
% Concatenate structures.  This also overwrites duplicate fields, so that
% the later arguments take priority over earlier arguments.

% checks the number of arguments
error(nargchk(1, Inf, nargin))

% removes the empty arguments (they get ignored)
varargin = varargin(~cellfun('isempty', varargin));

% counts the new arguments
numArgs = numel(varargin);

% initialises allStruct
allStruct = 0;

% for each argument checks that they're a structure
for m = 1:numel(varargin)
    % is it a structure?
    allStruct = allStruct + isstruct(varargin{m});

% are they all structures?
if allStruct ~= numArgs
    % errors
    error('All arguments must be structures.')

% defines the output as the first argument
output = varargin{1};

% for each structure...
for n = 2:numArgs
    % get the fieldnames
    fields = fieldnames(varargin{n});

    % for each field
    for nn = 1:numel(fields)
        % add it on to the first stucture
        output.(fields{nn}) = varargin{n}.(fields{nn});

Contact us