Search through Cell
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Jan
2011-8-19
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.
更多回答(1 个)
Daniel Shub
2011-8-19
A = cell2mat(A);
[row column] = find(A(:,1:3) == 0);
A = mat2cell(x, N, [1, 1, 1, 1]);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!