Effacer les filtres
Effacer les filtres

Concatenate multi dimensional matrix

9 vues (au cours des 30 derniers jours)
David Ponce
David Ponce le 12 Oct 2018
Réponse apportée : Matt J le 12 Oct 2018
I have a matrix which has these 3rd dimensions or pages. A(:,:,1), A(:,:,2), A(:,:,3)
Now, I wanted these three to be vertically concatenated. But i'm looking for an algorithm like in a for sentence for do it in large scale.
I know this: b = cat(1,a(:,:,i)) but i don't have the entire matrix in b because its override. Thank you.

Réponse acceptée

Guillaume
Guillaume le 12 Oct 2018
Modifié(e) : Guillaume le 12 Oct 2018
Your b = cat(1, a(:, :, i)) is incorrect and is just equivalent to b = a(:, :, i). If you were to use a loop you could do it like this:
b = [];
for i = 1:size(a, 3)
b = [b; a(:, :, 1)]; %which is cat(1, b, a(:, :, i))
end
This would be extremely innefficient and matlab's editor will warn you that you're resizing b on every iteration. The proper way to do it in matlab is:
b = reshape(permute(a, [1 3 2]), [], size(a, 2))
without a loop.

Plus de réponses (1)

Matt J
Matt J le 12 Oct 2018
Another way,
Acell=num2cell(A,[1,2]);
B=vertcat(Acell{:});

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by