compare length of arrays in a cell

6 ビュー (過去 30 日間)
ludvikjahn
ludvikjahn 2015 年 3 月 12 日
コメント済み: Adam 2015 年 3 月 13 日
good morning, I have acell array and i want to compare cell's length. Till now I used just t compare the equality of the cells using:
isequal(A{1,:})
A is the cell array.
I tried to run
isequal(length(A{1,:}))
but that's not correct.
What is the easiest way to achieve that, without using a or cycle???
Thanks
  6 件のコメント
ludvikjahn
ludvikjahn 2015 年 3 月 13 日
yes of course, I have just mistaken the brackets.
Adam
Adam 2015 年 3 月 13 日

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2015 年 3 月 13 日
編集済み: Stephen23 2015 年 3 月 13 日
This is easy to do in one line using cellfun , diff and any:
>> A = {cell(1,3),cell(1,3),cell(1,3)};
>> B = {cell(1,5),cell(1,2),cell(1,9)};
>> any(~diff(cellfun(@numel,A)))
ans =
1
>> any(~diff(cellfun(@numel,B)))
ans =
0

その他の回答 (1 件)

per isakson
per isakson 2015 年 3 月 12 日
編集済み: per isakson 2015 年 3 月 12 日
A hint based on some guessing
cac = {'abc','def', 'ghi'};
tmp = cellfun( @length, cac, 'uni', false );
isequal( tmp{:} )
returns
ans =
1
I failed to make a one-liner
&nbsp
Addendum
A variant more in line with the comments to the question
cac = {'abc','def', 'ghi'};
cac = { cac, cac, cac };
tmp = cellfun( @length, cac, 'uni', false );
isequal( tmp{:} )
returns
ans =
1
  2 件のコメント
ludvikjahn
ludvikjahn 2015 年 3 月 12 日
編集済み: ludvikjahn 2015 年 3 月 12 日
sorry, what stands 'uni' for? just as an example of length?
per isakson
per isakson 2015 年 3 月 12 日
編集済み: per isakson 2015 年 3 月 12 日
It's short for 'UniformOutput'. See cellfun, Apply function to each cell in cell array

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCell Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by