how to rename fields in struc and adding new field name
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    TESFALEM ALDADA
 el 17 de Dic. de 2020
  
    
    
    
    
    Comentada: TESFALEM ALDADA
 el 21 de Dic. de 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 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 17 de Dic. de 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 comentarios
  Walter Roberson
      
      
 el 21 de Dic. de 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
Más respuestas (1)
  Jan
      
      
 el 21 de Dic. de 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 comentarios
Ver también
Categorías
				Más información sobre Structures en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


