# Find in a cell array?

2,952 views (last 30 days)

Show older comments

Hello all,

Suppose a cell array 10x1 consisted of random numbers from 1 to 5. How can I find the locations for number 5?

All the best,

MhD

##### 3 Comments

Marwan Malaeb
on 20 May 2022

call this array for example X

type k=find(X==5)

it will return for you the number of the cell that has the value of 5.

### Accepted Answer

Jan
on 7 Aug 2013

Edited: Jan
on 7 Aug 2013

C = {1,5,3,4,2,3,4,5,2,1};

index = find([C{:}] == 5);

Here [C{:}] is a faster inlined version of cell2mat.

Alternative:

index = cellfun(@(x) x==5, C, 'UniformOutput', 1);

Or the long and most likely faster form:

index = false(1, numel(C))

for k = 1:numel(C)

index(k) = (C{k} == 5);

end

[EDITED] If you are talking of a cell string, this is much faster:

D = {'1' '5' '3' '4' '2' '3' '4' '5' '2' '1'};

index = find(strcmp(D, '5'));

##### 5 Comments

Kylie Hansen
on 16 Aug 2017

### More Answers (2)

Bill Tubbs
on 15 Feb 2022

Just in case someone comes here looking to do this with a cell array of chars as I was, it's quite easy this way:

my_cell_array = {'a', 'b', 'c'};

i = find(strcmp(my_cell_array, 'b'));

assert(i == 2)

##### 1 Comment

Caroline
on 7 Aug 2013

Edited: Azzi Abdelmalek
on 7 Aug 2013

cellarray_new = zeros; %initializing the array

ind = 1; %indices for new array

for j = 1:10

if (cellarray(j) == 5)

cellarray_new(ind) = j;

ind = ind + 1;

end

end

the array cellarray_new will contain all the indices of the original cell array that contain the number 5

##### 3 Comments

Filza Ashraf
on 22 May 2014

how can i find a pixel intensity if cell contains an image or image is stored in cell???

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!