Increasing size of Multidimensional Array
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi all,
I have one multidimensional array T of size (n1,n2,n3,...) and I need to build a new array S of size (n1+1,n2+1,n3+1,...) with the same values of A and zeros in all the added coefficients. In other words, I need to pad one "slice" of zeros at the end of each dimension of T.
The problem is that I don't know the size of T until runtime... so code should work for any number of dimensions...
Any idea how to do it? (other than a extremely slow loop in all coefficients of A) Thanks in advance! Sergio
3 commentaires
Réponses (2)
Azzi Abdelmalek
le 22 Juin 2015
idx=num2cell(size(T)+1);
T(idx{:})=0;
Guillaume
le 22 Juin 2015
newT = zeros(size(T) + 1); %create new array with increased size
destidx = arrayfun(@(s) 1:s, size(T), 'UniformOutput', false);
newT(destidx{:}) = T
The last line is the programmatic equivalent of
newT(1:size(T, 1), 1:size(T, 2), 1:size(T, 3), ...) = T
And the line before that is just building these indices
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!