matlab script to iterate through a struct and extract names and values
function [ names values ] = structIterator( struct, prependName,delimiter, names, values )
%STRUCTITERATOR This utility function iterates through all fields in struct.
%If fields doesn’t contain a struct it construct and stores iterated and concatenated field names separated by delimiter in the vector
%names and the corresponsing values in values
% This function can be called as structIterator(struct) without further
% arguments
% Version 0.1
% Copyright
% Thomas Mosgaard Giselsson
if nargin names = {};
values = [];
end
if nargin prependName=”;
end
if nargin delimiter = ”;
end
if isstruct(struct)
fieldNames = fieldnames(struct);
for name=fieldNames’
if isempty(prependName)
prependNameS = name{:};
else
prependNameS = [prependName delimiter name{:}];
end
if isstruct(struct.(name{:}))
[names values] = structIterator(struct.(name{:}),prependNameS,delimiter,names,values);
else
names=[names; prependNameS];
values = [values; struct.(name{:})];
end
end
end