getting first element of each cell array with different sizes
53 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I have a 205 x 1 cell with diffferent sizes and I want to extract only the first element of each cell. For example, I have:
[8,14]
[10,14,15]
[9,14]
[5,14] etc till 205
and the result should be:
8
10
9
5.
Thanks a lot!
M.
0 commentaires
Réponse acceptée
Stephen23
le 18 Oct 2017
Modifié(e) : Stephen23
le 18 Oct 2017
>> C = {[8,14];[10,14,15];[9,14];[5,14]};
>> cellfun(@(v)v(1),C)
ans =
8
10
9
5
1 commentaire
Stephen23
le 18 Oct 2017
And to allow for empty arrays:
>> C = {[8,14];[10,14,15];[9,14];[5,14];[]};
>> idx = ~cellfun('isempty',C);
>> out = zeros(size(C));
>> out(idx) = cellfun(@(v)v(1),C(idx))
out =
8
10
9
5
0
Plus de réponses (2)
Christian Keine
le 18 Oct 2017
There are at least two possible ways this could be done. First, you could loop through the cell array and extract the first value of each cell. This is, however, probably not the most elegant or fastest solution. The second option is to use cellfun in combination with an anonymous function which extracts only the first value of each cell, which should work faster for large arrays and is easier to read.
To do so, first define the function that should be executed for each cell:
fun = @(x) x(1)
Then apply this function to each cell in the array using cellfun with x being you cell array
firstElement = cellfun(fun,x)
Using your data it would look like this:
x = {[8,14],[10,14,15],[9,14],[5,14]}
fun = @(x) x(1)
firstElement = cellfun(fun,x)
Hope this is helpful.
3 commentaires
Daniel Rieger
le 10 Juil 2019
Modifié(e) : Daniel Rieger
le 10 Juil 2019
Hello guys,
what if i only want to obtain the first entry of the first cell?
Or more general: what if i want a specific entry not for each but only for one cell?
I could also use and then cut out the entries that i dont need, but is there a more elegant way?
% N: wanted entry
all_entry = cellfun(@(v)v(1),C)
wanted_entry = all_entry(N)
1 commentaire
Voir également
Catégories
En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!