how to use find to cell cell indexing

1 view (last 30 days)
RuiQi
RuiQi on 10 Dec 2016
Edited: RuiQi on 10 Dec 2016
why does this not work ?
find(grnd_truth_cell{:,1} == 6)
I want to find all of grnd_truth_cell whose 1st column at every row == 6 but matlab tell me Error using == Too many input arguments.
  2 Comments
Image Analyst
Image Analyst on 10 Dec 2016
If you just type this on the command line
grnd_truth_cell{:,1}
what does it report to the command window? Show us.
RuiQi
RuiQi on 10 Dec 2016
These are the last few numbers. It goes from 0 to 7480
ans =
7480
ans =
7480
ans =
7480
ans =
7480

Sign in to comment.

Accepted Answer

dpb
dpb on 10 Dec 2016
Because as your command line shows,
grnd_truth_cell{:,1}
is a comma-separated list. Enclose it in the [] to make an array that find can operate over--
find([grnd_truth_cell{:,1}]==6)
  1 Comment
RuiQi
RuiQi on 10 Dec 2016
Edited: RuiQi on 10 Dec 2016
thank you and imageanalyst, i learnt how to handle 'comma-separated lists' today using []

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 10 Dec 2016
Edited: Image Analyst on 10 Dec 2016
Maybe you can assign it to a column vector first
col1 = grnd_truth_cell{:,1};
whos col1
rowsThatEqual6 = find(col1 == 6); % Braces.
How does that work? Maybe you need to use cell2mat():
col1 = cell2mat(grnd_truth_cell(:, 1)); % Parentheses
If that doesn't work, attach grnd_truth_cell in a .mat file so I can try some things.
save('grnd_truth_cell.mat', 'grnd_truth_cell');
And please read the FAQ on cell arrays: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F

Categories

Find more on Structures in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!