How to Exclude Some Fields While Using the Function structfun?
Ältere Kommentare anzeigen
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 Kommentar
dpb
am 5 Mär. 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])
Akzeptierte Antwort
Weitere Antworten (1)
Jari Braeckman
am 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
Kategorien
Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!