How to Exclude Some Fields While Using the Function structfun?
Afficher commentaires plus anciens
A.B.C = [1 2 3];
A.B.D = [3 4 5];
A.B.E = [6 7 8];
How to exclude A.B.E from the calculation and just get the sums of A.B.C and A.B.D (i.e., g = [4 6 8])?
for i = 1 : 3
z = structfun(@(x) x(i), A.B);
g(1, i) = sum(z);
end
g
1 commentaire
dpb
le 5 Mar 2017
structfun doesn't have an except clause; think you'll have to use dynamic field names and looping to accomplish this programmatically.
The simple answer for the specific case that doesn't generalize well and is probably not the actual question, either, is just
sum([A.B.C;A.B.D])
Réponse acceptée
Plus de réponses (1)
Jari Braeckman
le 7 Sep 2021
It should work like this
for i = 1 : 3
z = structfun(@(x) x(i), rmfield(A.B,'E'));
g(1,i) = sum(z);
end
Catégories
En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!