horzcat — Concatenate inputs side-by-side (dimension 2) just like MATLAB's square-bracket syntax.
horzcat(A1, A2, …) horizontally concatenates its inputs, matching the behaviour of MATLAB's square-bracket syntax [A1 A2 …]. It is the building block for row-wise array construction in RunMat.
How horzcat works in RunMat
- Operates on numeric, logical, complex, character, string, and cell arrays with MATLAB-compatible type checking.
- All inputs must have the same number of rows (dimension 1). Higher dimensions are padded with singleton sizes where necessary.
- Scalars act as
1×1building blocks, sohorzcat(1, 2, 3)produces the row vector[1 2 3]. - Empty inputs participate naturally. If every operand is empty, the result is the canonical
0×0double. - When the trailing
'like', prototypepair is supplied, the output matches the prototype's residency (host or GPU) and numeric category. - Mixing
gpuArrayoperands with host operands is an error—convert explicitly usinggpuArrayorgather.
How horzcat runs on the GPU
horzcat delegates to cat(dim = 2, …). When the active acceleration provider implements the cat hook, the concatenation is executed directly on the GPU without staging data back to the CPU. Providers that lack this hook fall back to gathering the operands, concatenating on the host, and uploading the result so downstream code still sees a gpuArray. This mirrors MATLAB's explicit GPU workflow while keeping RunMat's auto-offload planner informed.
Examples
Concatenating matrices by columns
A = [1 2; 3 4];
B = [10 20; 30 40];
C = horzcat(A, B)Expected output:
C =
1 2 10 20
3 4 30 40Building a row vector from scalars
row = horzcat(1, 2, 3, 4)Expected output:
row = [1 2 3 4]Extending character arrays into words
lhs = ['Run' ; 'GPU'];
rhs = ['Mat' ; 'Fun'];
words = horzcat(lhs, rhs)Expected output:
words =
RunMat
GPUFunKeeping gpuArray inputs resident on the device
G1 = gpuArray(rand(256, 128));
G2 = gpuArray(rand(256, 64));
wide = horzcat(G1, G2)Preserving empties when all inputs are empty
emptyBlock = zeros(0, 3);
result = horzcat(emptyBlock, emptyBlock)Matching an output prototype with the 'like' syntax
proto = gpuArray.zeros(5, 1);
combo = horzcat(ones(5, 1), zeros(5, 1), "like", proto)Related functions to explore
These functions work well alongside horzcat. Each page has runnable examples you can try in the browser.
cat, vertcat, reshape, gpuArray, gather, circshift, diag, flip, fliplr, flipud, ipermute, kron, permute, repmat, rot90, squeeze, tril, triu
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how horzcat works, line by line, in Rust.
- View horzcat.rs on GitHub
- Learn how the runtime works
- Found a bug? Open an issue with a minimal reproduction.
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code — faster, on any GPU, with no license required.
- Simulations that took hours now take minutes. RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed.
- Start running code in seconds. Open the browser sandbox or download a single binary. No license server, no IT ticket, no setup.
- A full development environment. GPU-accelerated 2D and 3D plotting, automatic versioning on every save, and a browser IDE you can share with a link.