如何检查结构中的所有数组是否具有相同的大小

时间:2015-04-22 09:53:11

标签: matlab

我有一个1xN结构myArrN一个未定义的整数),它由一组矩阵组成。那些多维数组可能有不同的大小,但如果它们都相等,我只能执行某些任务。我怎样才能进行检查?

示例:

mystruct = 

1x4 struct array with fields:
    Scalar
    Matrix

我想知道作为二维矩阵的场Matrix的二维矩阵在四个结构中是否具有相同的长度。是否有任何MATLAB函数或函数集来轻松检查?

谢谢!

2 个答案:

答案 0 :(得分:3)

使用arrayfun与第一个元素的size进行比较:

 tf = arrayfun( @(x)  isequal( size(x.Matrix), size(myArr(1).Matrix) ), myArr );
如果所有tf具有完全相同的myArr.Matrix,则

size为真。

请注意,如果isequal( size(x), size(y) )all( size(x)==size(y) )具有不同数量的dimmensions,则使用x比检查y更健壮。

答案 1 :(得分:1)

另一种方式是

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

myArr.Matrix扩展为以逗号分隔的列表,isequal可以使用多个输入。