Expand vector along third dimension
18 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
My question is simply, but I cannot figure out how to do it.
Assume I have a vector K=[K_1,..,K_n] then I would like to create a three dimensional matrix M with first dimension equal to x, second dimension equal to y and third dimension equal to n such that M(:,:,1)=K1*ones(x,y), M(:,:,2)=K2 * ones(x,y) etc. I know of course I can loop, but I am expecting a neat one-liner exists.
0 commentaires
Réponse acceptée
Matt J
le 25 Nov 2014
Modifié(e) : Matt J
le 25 Nov 2014
I have a matrix S which is x times y. Then I would subtract each element of K (what I wanted to use the extra dimension for), take the positive part (i.e. max of the result and 0) and sum out the first dimension x to get a y times n matrix.
K=reshape(K,1,1);
result = squeeze( sum( max( bsxfun(@minus,S,K), 0), 1 ) )
1 commentaire
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!