How do i get multiple values all at once from cell array?
조회 수: 41 (최근 30일)
이전 댓글 표시
Hi,
I have a 7365x60 cell, and there are 1x7 cell in every single block of the big one, like the image shown below:![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1049770/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1049770/image.png)
here is the question, how can i get the second value from the 1x7 cell all at once without using cellfun and for loop(cause they are slow), for example, i want to get f from the Trajectory_Data (has 7365x60 cell) which is shown below, but when i run the code below, i got the error:"Expected one output from a curly brace or dot indexing expression, but there were 7365 results.",i dont know how to get all the second value from the cell (there would be 7365x60 = 441900 values in total),can anyone help me?
f = Trajectory_Data{:,1}{:,2}
댓글 수: 0
답변 (3개)
Walter Roberson
2022년 6월 29일
Your options:
- loop
- cellfun
- arrayfun (effectively the same as cellfun)
- cell2mat to form a 3d array, and then index; this is very likely going to be slower than cellfun
- cat() the contents of the cell together along some dimension, process the results, and reshape() afterwards; this is very likely going to be slower than cellfun
Stephen23
2022년 6월 29일
편집: Stephen23
2022년 6월 29일
"... for loop(cause they are slow)"
A well-written loop will be fast enough, e.g. where C is your cell array and assuming that the nested cells contain scalar numerics:
M = nan(size(C));
for k = 1:numel(C)
M(k) = C{k}{2};
end
Better data design would store such regular data in one numeric array, which would make this task trivial and fast.
댓글 수: 3
참고 항목
카테고리
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!