how to use find to cell cell indexing

1 Ansicht (letzte 30 Tage)
RuiQi
RuiQi am 10 Dez. 2016
Bearbeitet: RuiQi am 10 Dez. 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 Kommentare
Image Analyst
Image Analyst am 10 Dez. 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 am 10 Dez. 2016
These are the last few numbers. It goes from 0 to 7480
ans =
7480
ans =
7480
ans =
7480
ans =
7480

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

dpb
dpb am 10 Dez. 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 Kommentar
RuiQi
RuiQi am 10 Dez. 2016
Bearbeitet: RuiQi am 10 Dez. 2016
thank you and imageanalyst, i learnt how to handle 'comma-separated lists' today using []

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 10 Dez. 2016
Bearbeitet: Image Analyst am 10 Dez. 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

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by