Hello,
I would like to change the name of a structure field at run time. Specifically, I want to change all the names to upper case. Currently I am achieving this with the following function:
function s = upperfnames(s)% upperfnames: converts all the field names in a structure to upper case
% get the structure field names
fn = fieldnames(s); for ii = 1:length(fn) fname = fn{ii}; % check if the field is already upper case
if ~strcmp(fname, upper(fname)) % if not create an upper case copy of the field
s.(upper(fname)) = s.(fname); % and remove the original
s = rmfield(s, fname); end end
end
The problem here is that I must create a copy of any fields with names which must be changed. According to the whos function as I step through the code, this uses up double the memory required for the field. This could cause problems when I forget about this in a year or two and try to change the name of a structure containing lots of data. Is there a more memory efficient way of doing this?
Thanks,
Richard
Best Answer