Je suis à peu près débutant, il est probablement possible de faire ce que je veux de manière simple.
J'ai une matrice 121x62 mais j'ai besoin de l'étendre à 121x1488, chaque colonne doit donc être répétée 24 fois. Par exemple, transformez ceci: dans ceci: p> avec chaque colonne. P> J'ai essayé Pour créer un vecteur avec ces valeurs, puis transformer avec Vec2Mat et ok j'ai une matrice 121x1488 mais répétée par des lignes: p> comment le faire par colonnes? p> < / p>
3 Réponses :
Vous allez ici:
function [result] = repcolumn(A, n) %n - how many times each column from A should be repeated [rows columns] = size(A); result = repmat(A(:,1),1,n); for i = 2:columns result = [result,repmat(A(:,i),1,n)]; end end
Je vous remercie. Il est assez propre et ça marche
Supposons que vous ayez cette entrée em> simplifiée em> et que vous souhaitez développer des colonnes séquentiellement Il y a peu de façons de faire que: p> réplique, puis remodelez: p>
Kronecker Produit: P>
en utilisant FEX: Depuis R2015A, n code> temps:
ans =
1 1 1 4 4 4
2 2 2 5 5 5
3 3 3 6 6 6
repelem(A,1,n)
Développer () Code>
: p>
expand(A,[1 n])
Repelem () Code>
: p>
kron(A,ones(1,n))
+1 pour kron code> solution
Merci pour trois solutions. Y a-t-il une préférence concernant la performance? En fait, je le fais dans une énorme boucle qui rend la performance très importante.
@Alirezamirien réplique, Remoder devrait être le plus rapide.
Accepter. Kron est une solution assez élégante
juste pour des raisons d'exhaustivité. Si vous souhaitez dupliquer le long des lignes, vous pouvez également utiliser rectpulse ().
1 2 3 1 2 3 1 2 3 4 5 6 4 5 6 4 5 6
Pourriez-vous coller le code avec la transformation Vec2Mat?
Gpt2 = repmat (zhd_gpt2 (:), 1,24); X = Vec2mat (GPT2 1488);