%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.

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 24 Jan. 2022

0 Stimmen

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 Kommentar

John
John am 24 Jan. 2022
Bearbeitet: John am 25 Jan. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Version

R2021b

Gefragt:

am 24 Jan. 2022

Bearbeitet:

am 25 Jan. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by