How do I extract specific data from an array inside a cell array using indexing?
19 次查看(过去 30 天)
显示 更早的评论
So I have a cell array B of size 4*101 in which each cell contains an array of size 1*3, like this:
B = cell([4 101]);
for i = 1:4
for ii = 1:101
B{i,ii} = rand([1 3]);
end
end
And I need to get the third element of the 1*3 arrays from all cells in the top row of the cell array. I can do that using
C = zeros(101,1)
for i = 1:101
C(i) = B{1,i}(3);
end
But since I need to extract this kind of data quite a lot it'd be a lot nicer to be able to do this in one line using indexing. I figured using
C = B{1,:}(3);
Should work but this gives the error
"Expected one output from a curly brace or dot indexing expression, but there were 101 results."
How do I index this so that it works?
0 个评论
采纳的回答
更多回答(2 个)
Peng Li
2020-4-14
d = cellfun(@(x) x(3), B);
d gives you the third element from all cells. You can index into d to find those that correspond to the first row.
Ameer Hamza
2020-4-14
编辑:Ameer Hamza
2020-4-14
Use can use basic indexing operations in MATLAB without the need to call any function
B = cell([4 101]);
for i = 1:4
for ii = 1:101
B{i,ii} = rand([1 3]);
end
end
result = [B{1,:}];
result = result(3:3:end);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!