Filter löschen
Filter löschen

Array of Structures to Structure of arrays

82 Ansichten (letzte 30 Tage)
Andrew C
Andrew C am 30 Sep. 2021
Beantwortet: Chunru am 1 Okt. 2021
How can I convert an array of structures into a structure of arrays.
I currently have an array of structs of size N that the only way to access it is to call them by
var = struct(1).fieldname
Where the fieldname is referencing a array of 1xM.
When I try to call var = struct.fieldname or var = struct(:).fieldname I only get one value, while I would like to get all values.
I have tried to do struct2cell and cell2mat, but these options expand the nested array.
What I want is to call each fieldname and get a matrix of NxM.
  2 Kommentare
Jan
Jan am 30 Sep. 2021
Bearbeitet: Jan am 30 Sep. 2021
The question is not clear yet, because the readers cannot know, how your struct looks like.
Andrew C
Andrew C am 30 Sep. 2021
Apologies. I will try to make it a bit clearer

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Sulaymon Eshkabilov
Sulaymon Eshkabilov am 1 Okt. 2021
Jan is right that your questions are not quite clear for the reader as described here. But what I've understood is the following:
% Let's say that X is the structure array:
FNames = fieldnames(X); % ALL Field Names residing in X structure array can be obtained
% This part seems to be optional for your exercise:
XX=zeros(length(FNames), 1);
for ii = 1:length(FNames)
xi = getfield(X, FNames{ii}); % Field Values
XX(ii) = xi;
end

Chunru
Chunru am 1 Okt. 2021
% array of structure
M = 5;
for i=1:M
a(i).f1 = rand(1,1);
a(i).f2 = rand(1,1);
end
a
a = 1×5 struct array with fields:
f1 f2
a(1)
ans = struct with fields:
f1: 0.6493 f2: 0.9459
% struncrure of array [assuming each field is a scalar in a]
f = fields(a(1));
for i=1:length(f)
b.(f{i}) = [a.(f{i})];
end
b
b = struct with fields:
f1: [0.6493 0.7285 0.1068 0.3718 0.3805] f2: [0.9459 0.5456 0.5360 0.2124 0.6030]

Kategorien

Mehr zu Cell Arrays finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by