Concatenate large matrices a bottleneck in function

2 Ansichten (letzte 30 Tage)
David McVea
David McVea am 4 Nov. 2020
Kommentiert: Walter Roberson am 4 Nov. 2020
Hi,
I have a function that concatenates two matrices, size of 100000 X 90 for an outcome of 100000 X 180.
This is a significant bottleneck as the function has to repeat many times.
Pre-allocating the outcome does not seem to make any difference, and using cat() or [] also seems to make no difference.
Does anyone have suggestions on how to speed this up?
Thank you.
  2 Kommentare
Sylvain
Sylvain am 4 Nov. 2020
can you post your code?
are you trying to do this ?
A=ones(100000,90);
B=2*ones(100000,90);
C = [A,B];
David McVea
David McVea am 4 Nov. 2020
Hello -
Thanks for your comment.
I won't post my code because, yes, that is exactly what I am doing.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Subhadeep Koley
Subhadeep Koley am 4 Nov. 2020
The horzcat() function is usually faster than cat() or [, ]. You may use it.
A = ones(100000,90);
B = 2*ones(100000,90);
result = horzcat(A, B);
  1 Kommentar
Walter Roberson
Walter Roberson am 4 Nov. 2020
The timing tests I tried show horzcat(A,B) and [A,B] and cat(2,A,B) to be indistinguishable in timing -- the differences were below random variation

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by