A better way to change the name of a structure field?
조회 수: 52 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
채택된 답변
Jan
2011년 3월 17일
F = fieldnames(S);
S = RenameField(S, F, upper(F));
It creates a shared data copy, such that the memory consumption is minimal.
BTW: I get exactly these two links on top, if I ask Google for "Matlab rename field".
댓글 수: 2
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Manage Products에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!