extract data from cell array

%Lets say I have a multi-element cell array with different variables/feilds within
c{1,1}.name = 'Tom'; c{1,1}.age = 48;
c{2,1}.name = 'Bob'; c{2,1}.age = 24;
c{3,1}.name = 'Jim'; c{3,1}.age = 12;
%I would like to create a vector, vec_age = [48 24 12]; from this data set
% without writing the loop
for i =1:length(c), vec_age(i) = c{i,1}.age; end
% Something nice would be similar to how you pull a vector from a matrix, v = m(:,3);
% in the form of vec_age = c{:,1}.age; ... but alas this does not work
% Thank you in advance for suggestion to a small problem that has been nagging me.

 Risposta accettata

c{1,1}.name = 'Tom'; c{1,1}.age = 48;
c{2,1}.name = 'Bob'; c{2,1}.age = 24;
c{3,1}.name = 'Jim'; c{3,1}.age = 12;
vec_age = cellfun(@(S) S.age, c)
vec_age = 3×1
48 24 12
This does not assume that the structs all have the same fields in the same order, which Benjamin's answer assumes.

1 Commento

John
John il 24 Gen 2022
Modificato: John il 25 Gen 2022
I oversimplified my case as I was trying to be concise. The data set I have is not of my making and the data types within are disparate. This solution works well. Thank you!

Accedi per commentare.

Più risposte (0)

Categorie

Prodotti

Release

R2021b

Richiesto:

il 24 Gen 2022

Modificato:

il 25 Gen 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by