我有一个1xN结构myArr
(N
一个未定义的整数),它由一组矩阵组成。那些多维数组可能有不同的大小,但如果它们都相等,我只能执行某些任务。我怎样才能进行检查?
示例:
mystruct =
1x4 struct array with fields:
Scalar
Matrix
我想知道作为二维矩阵的场Matrix
的二维矩阵在四个结构中是否具有相同的长度。是否有任何MATLAB函数或函数集来轻松检查?
谢谢!
答案 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
可以使用多个输入。