vertcat — Concatenate inputs vertically along the first dimension with MATLAB semicolon semantics.
vertcat(A1, A2, ...) stacks inputs top-to-bottom along dimension 1, equivalent to MATLAB semicolon syntax [A1; A2; ...] with compatible shape rules.
Syntax
B = vertcat()
B = vertcat(A1, An...)Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
A1 | Any | Yes | — | First input array. |
An | Any | Variadic | — | Additional input arrays. |
Returns
| Name | Type | Description |
|---|---|---|
B | Any | Vertically concatenated result (dimension 1). |
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:vertcat:InvalidInput | Inputs are malformed or incompatible for vertical concatenation. | vertcat: invalid input arguments |
RunMat:vertcat:TypeMismatch | Input classes cannot be concatenated together. | vertcat: incompatible input classes for concatenation |
How vertcat works
- Hard-codes
dim = 1. All inputs must agree on every dimension except the first. - Accepts numeric, logical, complex, character, string, and cell arrays with MATLAB-compatible type checking. Mixing classes is an error.
- Scalars are treated as
1×1, enabling concise row-building such asvertcat(1, 2, 3). - Empty inputs participate naturally. If any shared dimension is zero, the result is empty with the expected shape.
- The optional trailing
'like', prototypepair forces the output to match the prototype's data residency (CPU vs GPU) and numeric flavour. - Mixing
gpuArrayinputs with host inputs is disallowed. Convert explicitly viagpuArrayorgatherto control residency.
Does RunMat run vertcat on the GPU?
vertcat delegates to cat(dim = 1, …). When the active acceleration provider implements the cat hook, concatenation happens entirely on the GPU, keeping gpuArray inputs resident and avoiding costly round-trips. Providers that lack this hook trigger a transparent fallback: RunMat gathers the operands to the host, concatenates them with MATLAB semantics, and uploads the result back to the originating device so downstream code still sees a gpuArray. This mirrors MATLAB's explicit GPU workflows while keeping RunMat's auto-offload planner informed.
Examples
Stacking matrices by adding rows
A = [1 2; 3 4];
B = [5 6; 7 8];
C = vertcat(A, B)Expected output:
C =
1 2
3 4
5 6
7 8Building a column vector from scalars
col = vertcat(1, 2, 3, 4)Expected output:
col =
1
2
3
4Combining character arrays into taller text blocks
top = ['RunMat'];
bottom = ['Rocks!'];
banner = vertcat(top, bottom)Joining string arrays into multi-row tables
header = ["Name" "Score"];
rows = ["Alice" "98"; "Bob" "92"];
table = vertcat(header, rows)Preserving logical masks when stacking
mask1 = logical([1 0 1]);
mask2 = logical([0 1 0]);
stacked = vertcat(mask1, mask2)Extending cell arrays downwards
row1 = {1, "low"};
row2 = {2, "high"};
grid = vertcat(row1, row2)Keeping gpuArray inputs resident on the device
G1 = gpuArray(rand(128, 256));
G2 = gpuArray(rand(64, 256));
stacked = vertcat(G1, G2)Requesting GPU output with the 'like' prototype
proto = gpuArray.zeros(1, 3);
result = vertcat([1 2 3], [4 5 6], "like", proto)Working with empty rows without surprises
empty = zeros(0, 3);
combo = vertcat(empty, empty)Stacking complex matrices preserves imaginary parts
z1 = complex([1 2], [3 4]);
z2 = complex([5 6], [7 8]);
joined = vertcat(z1, z2)Using vertcat with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how vertcat changes the result.
Run a small vertcat example, explain the result, then change one input and compare the output.
Related Array functions
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how vertcat is executed, line by line, in Rust.
- View the source for vertcat in Rust on GitHub
- Learn how the RunMat 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 blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.