Search through Cell
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Akzeptierte Antwort
Jan
am 19 Aug. 2011
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);
end
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.
Weitere Antworten (1)
Daniel Shub
am 19 Aug. 2011
A = cell2mat(A);
[row column] = find(A(:,1:3) == 0);
A = mat2cell(x, N, [1, 1, 1, 1]);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!