Really easy one how to quickly repeat columns in an array

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

回答 (5 件)

Jan
Jan 2018 年 6 月 20 日

3 投票

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 2017 年 7 月 21 日
編集済み: per isakson 2017 年 7 月 21 日

2 投票

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 2017 年 7 月 21 日
編集済み: Andrei Bobrov 2017 年 7 月 21 日

1 投票

a = 1:10;
out = a(:)*ones(1,10);

カテゴリ

ヘルプ センター および File ExchangeMultidimensional Arrays についてさらに検索

製品

質問済み:

2017 年 7 月 21 日

回答済み:

Jan
2018 年 6 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by