Problem 43685. Apply Function to Each Field of a Structure Array: Part 1
The builtin structfun applies a function handle to each field of a scalar structure, but it does not work for structure array. The purpose of this problem is to generalize structfun to enable support for structure array input.
Write your own function structfun2 which accepts a structure array s and a function handle f as the inputs. The output c = structfun2(f,s) is a cell array of the same size as s, with each cell storing the result of f applied to every field of the relevant structure element in s. The structfun2 must preserve the behavior of structfun for scalar structure input. That is, structfun2(f,s) = structfun(f,s) holds for any scalar structure s. The assumption required is that f is a function that returns a scalar, regardless of the input.
Example:
s = struct('f1',{1, [3 4]; 1, [5 6]},'f2',{[1 2], 2; [3 4 5], [2 5]}); f = @numel; c = {[1;2], [2;1]; [1;3], [2;2]};
Related problems in this series:
Solution Stats
Problem Comments
Solution Comments
Show commentsProblem Recent Solvers28
Suggested Problems
-
Similar Triangles - find the height of the tree
448 Solvers
-
Find the maximum number of decimal places in a set of numbers
3008 Solvers
-
Implement simple rotation cypher
1085 Solvers
-
Circular Primes (based on Project Euler, problem 35)
571 Solvers
-
Determine the number of odd integers in a vector
755 Solvers
More from this Author29
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!