how to rename fields in struc and adding new field name

3 ビュー (過去 30 日間)
TESFALEM ALDADA
TESFALEM ALDADA 2020 年 12 月 17 日
コメント済み: TESFALEM ALDADA 2020 年 12 月 21 日
Hello everyone
I have a stuct to work wit and i wonted to rename the field name (XX) by 'Area (km2)' and also i wanted to add new filed column between YY and ZZ as shown below.
wish you best

採用された回答

Walter Roberson
Walter Roberson 2020 年 12 月 17 日
struct fieldnames must be valid MATLAB identifiers, so spaces and brackets are not permitted.
The characters are permitted in the names of Variables in table() objects.
To add a new field at a particular location, the easiest way is to add the new field and then to use orderfields() to change the order.
  3 件のコメント
Walter Roberson
Walter Roberson 2020 年 12 月 21 日
foo = struct('a', 1, 'b', 2, 'd', 4);
foo.c = 3
foo = struct with fields:
a: 1 b: 2 d: 4 c: 3
%new field has been added but it is out of place
newfoo = orderfields(foo, {'d', 'c', 'b', 'a'})
newfoo = struct with fields:
d: 4 c: 3 b: 2 a: 1
%and now it is in very specific place
TESFALEM ALDADA
TESFALEM ALDADA 2020 年 12 月 21 日
Okey it works fine thank you so much!!

サインインしてコメントする。

その他の回答 (1 件)

Jan
Jan 2020 年 12 月 21 日
Adding a field at the end is trivial:
porositiy.newField = [];
Adding a field at a specific location is a bad idea, because the order of fields is not really fixed. But it works:
function S = AddFieldAfter(S, AfterField, NewField, NewData)
SField = fieldnames(S);
SData = struct2cell(S);
nS = numel(S);
sizeS = size(S);
index = find(strcmp(SField, AfterField));
if ~isempty(index)
SField = cat(1, SField(1:index), {NewField}, SField(index + 1:end));
if ~isequal(size(NewData), sizeS)
NewDataC = cell([1, nS]);
NewDataC(:) = {NewData};
end
SData = cat(1, SData(1:index, 1:nS), NewDataC, SData(index + 1:end, 1:nS));
S = reshape(cell2struct(SData, SField), sizeS);
else % Field not found, append at the end:
S.(NewField) = NewData;
end
end

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by