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
    • addpoints
    • ancestor
    • animatedline
    • area
    • axes
    • axis
    • bar
    • barh
    • box
    • caxis
    • cla
    • clf
    • clim
    • colorbar
    • colorcube
    • colormap
    • colororder
    • contour
    • contour3
    • contourf
    • copyobj
    • daspect
    • datacursormode
    • dataTipTextRow
    • errorbar
    • fcontour
    • figure
    • fill
    • fill3
    • findobj
    • fsurf
    • gca
    • gcf
    • get
    • gobjects
    • grid
    • groot
    • heatmap
    • hgload
    • hgsave
    • hidden
    • hist
    • histogram
    • histogram2
    • hold
    • image
    • imagesc
    • imshow
    • legend
    • line
    • linkaxes
    • loglog
    • mesh
    • meshc
    • openfig
    • opengl
    • pan
    • parula
    • patch
    • pie
    • plot
    • plot3
    • plotmatrix
    • plotyy
    • polarhistogram
    • polarplot
    • polarscatter
    • print
    • quiver
    • quiver3
    • ribbon
    • saveas
    • savefig
    • scatter
    • scatter3
    • semilogx
    • semilogy
    • set
    • sgtitle
    • shading
    • sphere
    • stackedplot
    • stairs
    • stem
    • subplot
    • subtitle
    • suptitle
    • surf
    • surfc
    • text
    • textscatter
    • textscatter3
    • title
    • triplot
    • view
    • waitbar
    • wordcloud
    • xlabel
    • xlim
    • xline
    • xscale
    • xtickangle
    • xtickformat
    • xticklabels
    • xticks
    • ylabel
    • ylim
    • yline
    • yscale
    • ytickangle
    • ytickformat
    • yticklabels
    • yticks
    • zlabel
    • zlim
    • zoom

copyobj — Copy plot-child graphics objects to a compatible axes parent.

copyobj duplicates supported graphics objects and returns fresh graphics handles. MATLAB's public inputs are graphics objects rather than integer data. RunMat currently supports plot-child object copies, including line, scatter, bar, stairs, stem, area, quiver, image, heatmap, binscatter, surface, patch, line3, scatter3, contour, fcontour, fsurf, constant-line, pie, and histogram-backed plot children.

Syntax

hnew = copyobj(h, parent)

Inputs

NameTypeRequiredDefaultDescription
hAnyYes—Graphics object handle or handle array to copy.
parentAnyYes—Destination axes handle compatible with the plot child.

Returns

NameTypeDescription
hnewNumericArrayCopied graphics object handle or handle array.

Errors

IdentifierWhenMessage
RunMat:copyobj:InvalidArgumentArgument count, source handle, or target parent handle is invalid or unsupported.copyobj: invalid argument
RunMat:copyobj:InternalInternal graphics state lookup or copy registration fails.copyobj: internal operation failed

How copyobj works

  • copyobj(h, parent) copies each plot-child handle in h to a compatible axes parent. Plot children such as lines do not accept a figure or panel as their destination parent.
  • Copied objects are inserted into the destination axes identified by parent.
  • A scalar parent is applied to every source handle; same-sized source and parent arrays copy each source into the corresponding parent; a scalar source can be copied into each parent in a parent array.
  • Handle arrays preserve the controlling input shape and receive fresh handle values. MATLAB forbids copying the same object more than once to the same parent in one call; enforcing that rule remains a compatibility gap.
  • Because RunMat currently encodes graphics handles numerically, compatibility mode can separately enable exact host typed-integer handle aliases for all eight integer classes. Negative and nonexact values reject before lookup; exactly representable aligned wide integers proceed to ordinary handle lookup. Resident integer arrays always reject without provider gather.
  • RunMat validates the whole source/parent copy plan before mutating graphics state, so invalid handle arrays do not leave partial copies behind.
  • Copied plot children preserve their plotted geometry and readable/writable plot-child properties such as Type, Parent, data vectors, line styling, and display names.
  • Figure, axes, text, legend, ruler, root-object, UI-container, and composite-chart deep copies are rejected with RunMat:copyobj:InvalidArgument rather than silently returning shallow placeholders.
  • The optional copyobj(obj, parent, 'legacy') callback/application-data form is not implemented. Callback, application-data, context-menu, toolbar, axes-interaction, and data-tip-template copy rules remain general object-copy gaps.

Does RunMat run copyobj on the GPU?

copyobj performs no provider dispatch because graphics object copying is a host graphics-registry operation.

When copied plot elements were originally built from GPU-resident input data, the existing plot-state representation is cloned; no additional CPU/GPU transfer is initiated by copyobj itself.

GPU memory and residency

copyobj returns host-side numeric graphics handles. It does not gather, transform, or upload GPU arrays.

Examples

Copy a line to another axes

h = plot(1:3, [1 4 9], 'DisplayName', 'source');
ax2 = subplot(1,2,2);
h2 = copyobj(h, ax2);
get(h2, 'Parent') == ax2

Expected output:

ans = true

Copy a handle array to the same parent

h(1) = plot(1:3);
h(2) = plot(3:-1:1);
ax2 = subplot(1,2,2);
h2 = copyobj(h, ax2);
size(h2)

Expected output:

ans = [1 2]

Copy one object into two parent axes

h = plot(1:3);
ax1 = subplot(1,2,1);
ax2 = subplot(1,2,2);
h2 = copyobj(h, [ax1 ax2]);
size(h2)

Expected output:

ans = [1 2]

Using copyobj with coding agents

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

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

FAQ

Does copyobj copy figures or axes?⌄

Not yet. This implementation covers plot-child graphics objects and reports a deterministic invalid-argument error for figure, axes, text, legend, ruler, and root deep-copy requests.

Does copying share mutable plot properties with the source?⌄

No. The copied plot receives a fresh handle and independent plot state.

Does copyobj launch GPU kernels?⌄

No. It operates on host-side graphics metadata. Plot geometry already stored in graphics state is cloned without provider dispatch.

Related Plotting functions

2D Charts

area · bar · errorbar · heatmap · hist · histogram · loglog · pie · plot · scatter · semilogx · semilogy · stairs · stem

3D & Surface

contour · contour3 · contourf · mesh · meshc · plot3 · quiver · scatter3 · surf · surfc

Images

image · imagesc · imshow

Axes & Layout

axis · box · grid · sgtitle · subplot · title · view · zlabel

Appearance

colorbar · colormap · legend · shading

Handle Access

gca · gcf · get · set

Other

addpoints · ancestor · animatedline · axes · barh · caxis · cla · clf · clim · colorcube · colororder · daspect · datacursormode · dataTipTextRow · fcontour · figure · fill · fill3 · findobj · fsurf · gobjects · groot · hgload · hgsave · hidden · histogram2 · hold · line · linkaxes · openfig · opengl · pan · parula · patch · plotmatrix · plotyy · polarhistogram · polarplot · polarscatter · print · quiver3 · ribbon · saveas · savefig · sphere · stackedplot · subtitle · suptitle · text · textscatter · textscatter3 · triplot · waitbar · wordcloud · xlabel · xlim · xline · xscale · xtickangle · xtickformat · xticklabels · xticks · ylabel · ylim · yline · yscale · ytickangle · ytickformat · yticklabels · yticks · zlim · zoom

Open-source implementation

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

  • View the source for copyobj 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 copyobj works
  • Does RunMat run copyobj on the GPU?
  • GPU memory and residency
  • Examples
  • Copy a line to another axes
  • Copy a handle array to the same parent
  • Copy one object into two parent axes
  • Using copyobj with coding agents
  • FAQ
  • Related Plotting functions
  • 2D Charts
  • 3D & Surface
  • Images
  • Axes & Layout
  • Appearance
  • Handle Access
  • Other
  • Open-source implementation
  • About RunMat