MATLAB: Search through Cell


Hi, I have problem working with cells.
I have a 1 x 4 cell with each cell containing an N X 1 column vector. How do I search through all the first three cell elements for the rows having a given value.
To illustrate further, if I a matrix, A = N X 4; and want to find where the values 0 occur, I do
[row column] = find(A(:,1:3) == 0);
So, essentially what I am looking for is its equivalent command for a cell.

Best Answer

  • What about a trivial FOR loop:
    C = {rand(100, 1), rand(100, 1), rand(100, 1), rand(100, 1)};
    value = 0.5;
    row = cell(1, 3);
    column = cell(1, 3);
    for i = 1:3
    [row{i}, column{i}] = find(C{1} == value);
    This can be done by CELLFUN also, but I do not see an advantage.
    Or you can create the numerical matrix explicitely and use logical indexing:
    Match = find(cat(2, C{1:3}) == value);
    Usually using the columns of the logical matrix Match is faster than using separate index vectors.