Clear Filters
Clear Filters

Get structure elements across fields

1 view (last 30 days)
I have a 1-by-n structure with -m- fields. All the elements of the structure are single numbers.
I want to get all the elements across any particular 'row' of the structure as a vector.
For example, I need to access [struct(n).field1 struct(n).field2 ... struct(n).fieldm] without having to go through the individual fields.

Accepted Answer

Mohammad Abouali
Mohammad Abouali on 28 Dec 2014
Edited: Mohammad Abouali on 28 Dec 2014
% Making sample data
s(1).field1=1;
s(1).field2=2;
s(1).field3=3;
s(2).field1=4;
s(2).field2=5;
s(2).field3=6;
% converting to regular array.
sTable=struct2table(s);
sArray=table2array(sTable)
sArray =
1 2 3
4 5 6
alternatively, you can also use struct2cell and cell2mat
sCell=struct2cell(s);
sCell=squeeze(sCell);
sArray=cell2mat(sCell)'
sArray =
1 2 3
4 5 6

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 28 Dec 2014
Edited: Azzi Abdelmalek on 28 Dec 2014
Another way:
d=struct('f1',num2cell(randi(10,1,10)),'f2',num2cell(randi(10,1,10)),'f3',num2cell(randi(10,1,10)))
n=4
e=d(n)
nf=fieldnames(d)
for k=1:numel(nf)
v(k,1)=e.(nf{k})
end

Categories

Find more on Structures in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!