MATLAB Answers

How determined lowest value in cell?

1 view (last 30 days)
I have cell name as x1
I try to determine the index of my LOOP based on its shortest length.
With the code below I can only index 47 with the longest length.
for K =1: length(x1{i})
...
end
x1 is a sample for 6 images. I have more than 100 images and cannot manually find the smallest value
I try to use:
min(cellfun(@(C)size(C,2),x1{i}))
but error on code.
How do I write it to show the shortest length, 15?

  0 Comments

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 31 Dec 2019
Edited: Stephen Cobeldick on 31 Dec 2019
For some reason you want to get the number of rows but in your code you check the number of columns. Also your input to cellfun is one numeric array, rather than the entire cell array:
>> min(cellfun(@(C)size(C,1),x1))
ans = 15

  2 Comments

jenifer Ask
jenifer Ask on 31 Dec 2019
How do I get a 6 * 1 vector with the length of points each?
for exemple vector include:
15
22
18
24
15
47
.... To the end.
Stephen Cobeldick
Stephen Cobeldick on 1 Jan 2020
Simply remove the min:
>> cellfun(@(C)size(C,1),x1)
ans =
15 22 18 24 35 47
Your example seems to be incorrect: the 5th array has 35 rows, not 15 as you wrote.

Sign in to comment.

More Answers (1)

Max Murphy
Max Murphy on 31 Dec 2019
x1{i} is a double, so you would use:
length(x1{i})
to get the length of that cell element. If you want to get the minimum length from all the lengths of each cell element, then you would use:
min(cellfun(@length,x1))

  0 Comments

Sign in to comment.

Sign in to answer this question.

Tags