Problem 42859. Convert nested struct-array to numeric array

Sometimes data happens to be nicely structured in a struct-array, distributed over various levels of the struct, according to the hierarchy in the logic of the data acquisition. For fitting the data, the relevant elements of the struct-array need to be converted to a simple, multi-dimensional numeric array.

That will be your assignment.

Create a function struct2mat that takes a struct-array as an input, and returns an array, where dimensions of the output data correspond to the struc-array levels in incremental order. The first output level enters dimension 1 of the output, the 2nd dimension 2, etc.

datastruct(1).level2(1).level3(1).data = 1:4;
datastruct(4).level2(3).level3(2).data = 4321:4324;
dataarray = struct2mat(datastruct)

should result in

dataarray(1,1,1,1) = 1;
dataarray(1,1,1,4) = 4;
dataarray(4,3,2,3) = 4323;

I encourage you to write a function that does not use loops to access the different struct-array levels.

Solution Stats

64.29% Correct | 35.71% Incorrect
Last Solution submitted on Jul 16, 2018

Problem Comments