How to copy field contents of one struct to another?
153 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ralf
el 13 de Jul. de 2015
Hi all,
I have got two structs, A and B. B has a subset of the fields of A:
A.f1 = 1;
A.f2 = 2;
A.f3 = 3;
B.f1 = 4;
B.f2 = 5;
Now I want to copy all field content of B to the corresponding fields of struct A, leaving the other fields of A unchanged:
A.f1 = B.f1;
A.f2 = B.f2;
% A.f3 == 3 untouched
Is there a simply way to achieve this for arbitraty structs A and B, considering that B's field names are always a subset of A's field names?
Thank you very much, Ralf
0 comentarios
Respuesta aceptada
Guillaume
el 13 de Jul. de 2015
Editada: Guillaume
el 13 de Jul. de 2015
A = struct('f1', 1, 'f2', 2, 'f3', 3);
B = struct('f1', 4, 'f2', 5);
for fn = fieldnames(B)'
A.(fn{1}) = B.(fn{1});
end
2 comentarios
Chris
hace alrededor de 16 horas
B.(fn{1})
returns the first value. If you have more than one value or data type (e.g., table) in the field, put this term in curly brackets { }:
A = struct('f1', 1, 'f2', 2, 'f3', 3);
B = struct('f1', 4, 'f2', 5);
for fn = fieldnames(B)'
A.(fn{1}) = {B.(fn{1})};
end
Stephen23
hace alrededor de 16 horas
Editada: Stephen23
hace alrededor de 16 horas
"If you have more than one value or data type (e.g., table) in the field, put this term in curly brackets { }:"
How many values there are in one field is irrelevant. It actually depends on how many elements B has:
Depending on the data types and array sizes the functions HORZCAT, VERTCAT etc may also be useful.
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!