how to concatenate structure fields

7 visualizaciones (últimos 30 días)
Newman el 15 de Jul. de 2016
Comentada: Azzi Abdelmalek el 15 de Jul. de 2016
Hello I have a structure s(i).f(j).d where i=1:40 and j=1:10.I want to concantenate all the fields in to one single matrix. for eg
for j=1:10
m(:,j)=s(1).f(j).d
with the following code above
this concatenates 10 column matrix into m .But this is just for s(1) how to proceed for s1..s2...s40 for all the 40 fields?
0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Azzi Abdelmalek el 15 de Jul. de 2016
Look at this example
s(1).f(1).d=11
s(1).f(2).d=12
s(2).f(1).d=21
s(2).f(2).d=22
a=s.f
n=numel(a)
for k=1:numel(s)
M(k,:)=[s(k).f(1:n).d]
end
4 comentariosMostrar 2 comentarios más antiguosOcultar 2 comentarios más antiguos
Newman el 15 de Jul. de 2016
this is my structure file
Azzi Abdelmalek el 15 de Jul. de 2016
a=s.f;
n=numel(a);
M=[]
for k=1:numel(s)
b=[s(k).f(1:n).d];
M=[M;b];
end
M

Iniciar sesión para comentar.

Más respuestas (1)

Guillaume el 15 de Jul. de 2016
Use a double for loop, then:
m = zeros(numel(s(1).f(1).d), numel(s(1).f(1)), numel(s)); %preallocation is advised
for sidx = 1:numel(s)
for fidx = 1:numel(s(sidx).f)
m(:, fidx, sidx) = s(sidx).f(fidx).d;
end
end
Note that I've concatenated the s1, ... s40 along the 3rd dimension. You didn't specify what you wanted exactly.
2 comentariosMostrar NingunoOcultar Ninguno
Newman el 15 de Jul. de 2016
Editada: Newman el 15 de Jul. de 2016
This is exactly what I want: please see the image below
your code is returning m as 10304x10x40 double where as I want it as 10304x400.(400= 10 fields in s(1) or s(2) etc. so for 40 s(i) = 40x10=400)
Guillaume el 15 de Jul. de 2016
Whichever shape you want for the output, the idea is still the same. Iterate over both arrays. To get the above:
m = zeros(numel(s(1).f(1).d, numel(s) * numel(s(1).f));
col = 1;
for sidx = 1 : numel(s)
for fidx = 1 : numel(f)
m(:, col) = s(sidx).f(idx).d;
col = col + 1;
end
end

Iniciar sesión para comentar.

Categorías

Más información sobre Wireless Communications en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by