How do i get multiple values all at once from cell array?
19 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I have a 7365x60 cell, and there are 1x7 cell in every single block of the big one, like the image shown below:

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 Commenti
Risposte (3)
Walter Roberson
il 29 Giu 2022
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
il 29 Giu 2022
Modificato: Stephen23
il 29 Giu 2022
"... 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 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!