concatenate array of structures with same field names
Mostrar comentarios más antiguos
Hi
I am reading datafile from a camera which spits out data in a certain format - about several Gb's in size.
The output format is more complex than the example below:
m = memmapfile(def_file,'Format',{'uint8',[8,1],'identifier';'uint8',[504,1],'Header';'uint16',[2^16,1],'Pix'},'Repeat',N,'Offset',0,'writable',false);
where N=8000
and this is the output
m.Data
8000×1 struct array with fields:
identifier
Header
Pix
so that m.Data.Pix has 8000 fields each with 65536 element vector
and m.Data.identifier also has 8000 fields each with 8 element vector
I want to concatenate each structure array example for N=20 is a script I adapted from the forum
M = CatStructFields(m.Data,1,1);
tic
Dat = CatStructFields(m.Data,1,3);
toc
To concatenate N=8000 for Pix (j=3) takes ~ half an hour.
There must be a faster way to do this. Any ideas here?
%%
function M = CatStructFields(S, dim, j)
fields = fieldnames(S);
M=[];
for k = 1:numel(S)
aField = fields{j};
M = cat(dim, M, S(k).(aField));
end
end
1 comentario
gujax
el 5 de Jun. de 2023
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!