Combine arrays to form another arrays
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Ellina
el 9 de Sept. de 2014
Comentada: Andrei Bobrov
el 9 de Sept. de 2014
Hello, can we combine many arrays into another arrays?
for example:
k = 5;
for u=1:k
H(:,:,u)=randn(M,N)+j*randn(M,N);
end
for u=1:k
Hi(:,:,1)=[H(:,:,2);H(:,:,3);H(:,:,4);H(:,:,5)];
Hi(:,:,2)=[H(:,:,1);H(:,:,3);H(:,:,4);H(:,:,5)];
Hi(:,:,3)=[H(:,:,1);H(:,:,2);H(:,:,4);H(:,:,5)];
Hi(:,:,4)=[H(:,:,1);H(:,:,2);H(:,:,3);H(:,:,5)];
Hi(:,:,5)=[H(:,:,1);H(:,:,2);H(:,:,3);H(:,:,4)];
end
what if k=19, should I repeat all the steps. Are there other simpler programs to combine it. Thank you
1 comentario
Pierre Benoit
el 9 de Sept. de 2014
What is the relation between the number of arrays you wish to concatenate each time and k ? Is it always 4, or k-1 or something else ?
Respuesta aceptada
Guillaume
el 9 de Sept. de 2014
H = randn(M, N, k) + j*randn(M, N, k); %no need for loop
c = num2cell(H, [1 2]); %split H into cell array along 3rd dimension
for u=1:k
indices = [1:u-1 u+1:k]; %get numbers 1:k without u
Hi(:, :, u) = vertcat(c{indices}); %use cell array to comma separated list expansion to feed vertcat
end
Más respuestas (1)
Pierre Benoit
el 9 de Sept. de 2014
Editada: Pierre Benoit
el 9 de Sept. de 2014
M = 5;
N = 5;
k = 5;
H = randn(M, N, k) + j*randn(M, N, k);
permut = nchoosek(1:k,k-1); % Find all permutations
permut = permut(end:-1:1,:); % Flip array
Hi = reshape(permute(reshape(H(:,:,permut'),[M N k-1 k]),[1 3 2 4]),
[M*(k-1) N k]);
Or with a for-loop to be more explicit
Hi = zeros(M*(k-1),N,k); % Pre-allocation
for ii = 1:k-1
Hi(:,:,ii) = reshape(permute(H(:,:,permut(ii,:)),[1 3 2]),[M*(k-1) N]);
end
1 comentario
Andrei Bobrov
el 9 de Sept. de 2014
variant
M = 4;
N = 3;
k = 5;
H = randn(M, N, k) + 1i*randn(M, N, k);
p = flipud(nchoosek(1:k,k-1));
Tout = permute(reshape(permute(H(:,:,p),[1 3 2]),[],k-1,N),[1 3 2]);
Ver también
Categorías
Más información sobre Matrices and Arrays 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!