How to check if all arrays in a structure are the same size

I have a 1xN-struct myArr

(with N

a undefined integer) that consists of a set of matrices. These multidimensional arrays can be of different sizes, but I can do certain tasks if they are all equal. How can I make this check?


mystruct = 

1x4 struct array with fields:


I wanted to know if 2D matrix fields Matrix

that are 2D matrix have the same length in the four structures. Is there a MATLAB function or set of functions to test this easily?



source to share

2 answers

Use arrayfun

to compare with the size

first element:

 tf = arrayfun( @(x)  isequal( size(x.Matrix), size(myArr(1).Matrix) ), myArr );



true if everyone myArr.Matrix

has exactly the same size


Note that it is safer to use isequal( size(x), size(y) )

than checking all( size(x)==size(y) )

if x

u y

have a different number of reductions.



Alternative way:

sz=cellfun(@size, {myArr.Matrix}, 'uni', 0);
allEq = (numel(sz) <= 1) || isequal(sz{:});



expands to a comma-separated list and isequal

can take multiple entries.



All Articles