Really easy one how to quickly repeat columns in an array

66 vues (au cours des 30 derniers jours)
Stuart Ellison
Stuart Ellison le 21 Juil 2017
Réponse apportée : Jan le 20 Juin 2018
How do I repeat a column n times within an array to expand form 10x1 to 10x10?
e.g.
1
2
3
4
5
6
7
8
10
to
1 1 1 1 1 1 1 1 1 1 ;
2 2 2 2 2 2 2 2 2 2 ;
3 3 3 3 3 3 3 3 3 3 ;
4 4 4 4 4 4 4 4 4 4 ;
5 5 5 5 5 5 5 5 5 5 ;
6 6 6 6 6 6 6 6 6 6 ;
7 7 7 7 7 7 7 7 7 7 ;
8 8 8 8 8 8 8 8 8 8 ;
9 9 9 9 9 9 9 9 9 9 ;
10 10 10 10 10 10 10 10 10 10

Réponses (5)

Jan
Jan le 20 Juin 2018
Summary:
a = (1:1000).';
n = 1000;
tic;
for k = 1:1000
M = repmat(a, 1, n);
end
toc % 0.14 sec
tic;
for k = 1:1000
M = repelem(a, 1, n);
end
toc % 0.15 sec
tic;
for k = 1:1000
M = a * ones(1, n);
end
toc % 0.64 sec
tic;
for k = 1:1000
M = a(:, ones(1, n));
end
toc % 1.04 sec
tic;
for k = 1:1000
M = kron(a, ones(1,n));
end
toc % 0.19 sec
!!! Speed is checked in a Matlab online version - I expect it to be different on a local computer. Run it on your machine !!!

per isakson
per isakson le 21 Juil 2017
Modifié(e) : per isakson le 21 Juil 2017
C = (1:10)';
M = repmat( C, [1,10] );
inspect the result
>> whos C M
Name Size Bytes Class Attributes
C 10x1 80 double
M 10x10 800 double

Andrei Bobrov
Andrei Bobrov le 21 Juil 2017
Modifié(e) : Andrei Bobrov le 21 Juil 2017
a = 1:10;
out = a(:)*ones(1,10);

Jan
Jan le 19 Juin 2018
a = 1:10;
repelem(a.', 1, 10)

Musa
Musa le 19 Juin 2018
You can use the Kronecker tensor product
a=1:10;
kron(a',ones(1,10))

Catégories

En savoir plus sur Function Creation 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!

Translated by