A better way to change the name of a structure field?
27 ビュー (過去 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 で Structures についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!