Really easy one how to quickly repeat columns in an array

66 ビュー (過去 30 日間)
Stuart Ellison
Stuart Ellison 2017 年 7 月 21 日
回答済み: Jan 2018 年 6 月 20 日
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 日
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 日
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 日
a = 1:10;
out = a(:)*ones(1,10);

Jan
Jan 2018 年 6 月 19 日
a = 1:10;
repelem(a.', 1, 10)

Musa
Musa 2018 年 6 月 19 日
You can use the Kronecker tensor product
a=1:10;
kron(a',ones(1,10))

カテゴリ

Help Center および File ExchangeFunction Creation についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by