how to find out number of rows in particular matrix of the cell?

Suppose i have 1*2 cell as shown below
A B
[1 2] [1 2 ; 3 4]
how can i find out number of rows in each cell..in these example they are 1 and rsply. for A and B.

 Accepted Answer

>> a = {[1 2] [1 2; 3 4]}'
>> cellfun('size',a,1)
ans =
1 2
For more:
help cellfun

2 Comments

can you please tell me how can i get number of rows for only one matrix in cell .. for example i want no. of rows of second matrix..then answe r should be single digit i.e. 2.
Thanks in advance.
For that case, you wouldn't need to use cellfun:
>>size(a{2},2)
ans =
2

Sign in to comment.

More Answers (1)

out=cellfun(@(x) size(x,1),a)

4 Comments

Azzi, as I understand it, cellfun('size',a,1) is the preferable way to do this, as the anonymous function call is not optimized like the string arguments to cellfun.
>> tic;cellfun(@(x)size(x,1),a);toc
Elapsed time is 0.000631 seconds.
vs.
>> tic;cellfun('size',a,1);toc
Elapsed time is 0.000290 seconds.
Or, a more dramatic example:
>>a = repmat({rand(7)},800,1000);
>> tic;cellfun(@(x)size(x,1),a);toc
Elapsed time is 6.095846 seconds.
vs.
tic;cellfun('size',a,1);toc
Elapsed time is 0.011584 seconds.
Sorry, my connection is very bad, I did not see your answer, I will remove mine
No worries, I often have the same problem. I just made that comment in order to clarify the difference between our answers (and to give you guys a chance to correct me in case I was mistaken :P). It wouldn't hurt to leave it up in order to have an example of how to use anonymous function handles with cellfun, especially since the list of available string arguments is pretty short and you oftentimes have to resort to function handles. I just wanted to clarify that, when available, the string arguments were best.

Sign in to comment.

Categories

Products

Community Treasure Hunt

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

Start Hunting!