RunMat
  • Pricing
RunMat
GitHub
GitHub
DownloadSign InTry in Browser
DesktopRuntimeServer
RunMat

Run math blazing fast

GitHubX (Twitter)LinkedIn

Company

  • About
  • Pricing
  • Contact

Explore

  • RunMat for academia
  • RunMat vs MATLAB Online
  • Benchmarks

Get product updates and release notes from the RunMat team.

© 2026 Dystr · Made withfor the scientific community.

RunMat™ is a registered trademark of Dystr, Inc. MATLAB® is a registered trademark of The MathWorks, Inc. RunMat is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.

LicensePrivacy
/
See all docs
Builtin Reference
    • colon
    • createArray
    • empty
    • eye
    • false
    • full
    • inf
    • linspace
    • logspace
    • magic
    • meshgrid
    • nan
    • nchoosek
    • ndgrid
    • nonzeros
    • ones
    • peaks
    • perms
    • rand
    • randi
    • randn
    • randperm
    • range
    • sparse
    • spdiags
    • speye
    • spones
    • sprand
    • true
    • zeros

peaks — Generate the standard peaks test surface in MATLAB and RunMat.

peaks(n) evaluates the standard peaks function over an n×n grid spanning [-3, 3] × [-3, 3]:

Z = 3*(1-x)^2 * exp(-x^2 - (y+1)^2)
    - 10*(x/5 - x^3 - y^5) * exp(-x^2 - y^2)
    - 1/3 * exp(-(x+1)^2 - y^2)

It is commonly used to demonstrate 3-D surface plots. Formula and default grid size follow MATLAB semantics.

Syntax

Z = peaks()
Z = peaks(n)
Z = peaks(X, Y)
[X,Y] = peaks(n)
[X,Y,Z] = peaks(n)
[X,Y] = peaks(X, Y)
[X,Y,Z] = peaks(X, Y)

Inputs

NameTypeRequiredDefaultDescription
nIntegerScalarYes49Grid size n for n-by-n sampling.
XNumericArrayYes—X coordinate matrix.
YNumericArrayYes—Y coordinate matrix (same size as X).

Returns

NameTypeDescription
ZNumericArraySampled peaks surface values.
XNumericArrayGrid coordinates along X-axis.
YNumericArrayGrid coordinates along Y-axis.

Returned values from peaks depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
—More than three outputs are requested.peaks: too many output arguments; maximum is 3
—The builtin is called with more than two input arguments.peaks: expected 0, 1, or 2 input arguments
—The n argument is not a numeric scalar.peaks: n must be a numeric scalar
—The n argument is non-finite.peaks: n must be finite
—The n argument is not an integer.peaks: n must be an integer
—The scalar n argument is not greater than one.peaks: scalar n must be an integer greater than 1
—The n argument exceeds platform limits.peaks: n is too large for this platform
—X/Y inputs are not numeric matrix values.peaks: X and Y must be numeric matrices
—X/Y inputs are not 2-D matrices.peaks: X and Y must be 2-D matrices
—X and Y inputs do not have the same shape.peaks: X and Y must have the same size

How peaks works

  • peaks with no arguments returns a 49×49 matrix (MATLAB default).
  • peaks(n) requires a scalar integer greater than one and returns an n×n matrix evaluated on an n-point grid from -3 to 3 on both axes. A typed-integer scalar n is a RunMat extension decoded structurally from native storage.
  • peaks(X, Y) accepts mutually compatible coordinate sizes and returns a broadcast Z matrix.
  • [X, Y, Z] = peaks(Xm,Ym) returns X and Y equal to the original coordinates, including their exact integer classes and wide values, while Z is computed in the floating peaks formula domain.
  • When exactly two outputs are requested, [X, Y] = peaks(n) returns only the coordinate grids without Z.

Does RunMat run peaks on the GPU?

RunMat computes peaks on the host and returns a host tensor. No acceleration provider hooks are defined for this builtin.

GPU memory and residency

peaks always runs on the host CPU today. If you need the result on the GPU, wrap the call in gpuArray(...).

Examples

Default 49×49 surface

Z = peaks;
surf(Z);

Custom grid size

Z = peaks(30);
surf(Z);
colormap('parula');
colorbar;

Full three-output form

[X, Y, Z] = peaks(40);
surf(X, Y, Z);
shading interp;
colorbar;
view(45, 30);

Caller-supplied coordinate matrices

[X, Y] = meshgrid(linspace(-3, 3, 50), linspace(-3, 3, 50));
Z = peaks(X, Y);
contourf(X, Y, Z);
colorbar;

Combine with contour

[X, Y, Z] = peaks(50);
subplot(1, 2, 1);
surf(X, Y, Z);
view(3);
subplot(1, 2, 2);
contourf(X, Y, Z);
colorbar;

Using peaks with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how peaks changes the result.

Run a small peaks example, explain the result, then change one input and compare the output.

FAQ

Why is the default size 49?⌄

MATLAB chose 49 as the default grid size for peaks. RunMat matches this specification.

Can I get the coordinate grids back as well as Z?⌄

Yes. Use [X, Y, Z] = peaks(n) to retrieve all three matrices.

How do I move the result to the GPU?⌄

RunMat can select the active provider automatically for generated grids. Explicit gpuArray inputs are a declared RunMat extension and are rejected in strict MATLAB compatibility mode.

What values are valid for scalar n?⌄

Scalar n must be an integer greater than one.

Related Array functions

Creation

colon · createArray · empty · eye · false · full · inf · linspace · logspace · magic · meshgrid · nan · nchoosek · ndgrid · nonzeros · ones · perms · rand · randi · randn · randperm · range · sparse · spdiags · speye · spones · sprand · true · zeros

Grouping

accumarray · combinations · discretize · findgroups · groupcounts · grp2idx · splitapply

Sorting Sets

argsort · intersect · ismember · ismembertol · issorted · issortedrows · setdiff · setxor · sort · sortrows · union · unique

Shape

blkdiag · cat · circshift · diag · flip · fliplr · flipud · horzcat · ipermute · kron · permute · repelem · repmat · reshape · rot90 · squeeze · toeplitz · tril · triu · vertcat

Indexing

find · ind2sub · sub2ind

Introspection

iscolumn · isempty · ismatrix · isrow · isscalar · isvector · length · ndims · numel · size

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how peaks is executed, line by line, in Rust.

  • View the source for peaks 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.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.

Download RunMatOpen Sandbox
On this page
  • Syntax
  • Inputs
  • Returns
  • Errors
  • How peaks works
  • Does RunMat run peaks on the GPU?
  • GPU memory and residency
  • Examples
  • Default 49×49 surface
  • Custom grid size
  • Full three-output form
  • Caller-supplied coordinate matrices
  • Combine with contour
  • Using peaks with coding agents
  • FAQ
  • Related Array functions
  • Creation
  • Grouping
  • Sorting Sets
  • Shape
  • Indexing
  • Introspection
  • Open-source implementation
  • About RunMat