how to rename fields in struc and adding new field name
    2 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    TESFALEM ALDADA
 am 17 Dez. 2020
  
    
    
    
    
    Kommentiert: TESFALEM ALDADA
 am 21 Dez. 2020
            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

0 Kommentare
Akzeptierte Antwort
  Walter Roberson
      
      
 am 17 Dez. 2020
        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 Kommentare
  Walter Roberson
      
      
 am 21 Dez. 2020
				foo = struct('a', 1, 'b', 2, 'd', 4);
foo.c = 3
%new field has been added but it is out of place
newfoo = orderfields(foo, {'d', 'c', 'b', 'a'})
%and now it is in very specific place
Weitere Antworten (1)
  Jan
      
      
 am 21 Dez. 2020
        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
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Structures finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


