pol2cart — Transform polar or cylindrical coordinates to Cartesian coordinates.

[x,y] = pol2cart(theta,rho) converts polar coordinates to Cartesian coordinates. [x,y,z] = pol2cart(theta,rho,z) converts cylindrical coordinates and returns the elevation after MATLAB-style implicit expansion.

Syntax

[x, y] = pol2cart(theta, rho)
[x, y, z] = pol2cart(theta, rho, z)

Inputs

NameTypeRequiredDefaultDescription
thetaAnyYesPolar or cylindrical angular coordinate in radians.
rhoAnyYesPolar or cylindrical radial coordinate.
zAnyYesCylindrical elevation coordinate.

Returns

NameTypeDescription
xNumericArrayCartesian x coordinate.
yNumericArrayCartesian y coordinate.
zNumericArrayCartesian z coordinate.

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

Errors

IdentifierWhenMessage
RunMat:pol2cart:InvalidInputAn input is not a supported real floating-point scalar or array.pol2cart: invalid input
RunMat:pol2cart:ComplexUnsupportedAt least one input is complex.pol2cart: complex inputs are not supported
RunMat:pol2cart:SizeMismatchInput arrays do not have compatible sizes for implicit expansion.pol2cart: size mismatch

How pol2cart works

  • Inputs must be real floating-point scalars, vectors, matrices, or N-D tensors.
  • theta, rho, and optional z must have the same size or compatible sizes for implicit expansion.
  • x is computed as rho .* cos(theta) and y is computed as rho .* sin(theta).
  • For cylindrical coordinates, the output z is the input elevation expanded to the same size as x and y.
  • Complex inputs are rejected, matching current MATLAB behavior.
  • Integer, logical, string, char, cell, struct, and object inputs are rejected because MATLAB documents pol2cart for real single and double data.
  • With no explicit multi-output context, RunMat returns the first output, x, matching MATLAB's single-output assignment behavior.

Examples

Converting polar coordinates

theta = [0 pi/4 pi/2 pi];
rho = [5 5 10 10];
[x,y] = pol2cart(theta,rho)

Expected output:

x = [5.0000 3.5355 0 -10.0000]
y = [0 3.5355 10.0000 0]

Converting cylindrical coordinates

theta = [0 pi/2]';
rho = [1 2 3];
z = 7;
[x,y,z] = pol2cart(theta,rho,z)

Expected output:

x =
     1     2     3
     0     0     0
y =
     0     0     0
     1     2     3
z =
     7     7     7
     7     7     7

Using pol2cart with coding agents

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

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

FAQ

What angle units does pol2cart use?

theta is in radians, measured counterclockwise from the positive x-axis.

Can I request only two outputs with three inputs?

Yes. [x,y] = pol2cart(theta,rho,z) computes the cylindrical transform but returns only x and y.

Does pol2cart accept complex inputs?

No. Current MATLAB releases reject complex inputs, and RunMat does the same.

Does RunMat keep pol2cart on the GPU?

Yes for real gpuArray inputs when the active provider supports the required sin, cos, and broadcasted multiply hooks. The returned x, y, and requested z outputs remain gpuArray values. Providers without those hooks fall back to host evaluation.

Trigonometry

acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · cospi · deg2rad · rad2deg · sin · sind · sinh · sinpi · tan · tand · tanh

Elementwise

abs · angle · bsxfun · complex · conj · double · erf · erfcinv · exp · expm1 · factorial · flintmax · gamma · gammaln · heaviside · hypot · idivide · imag · intmax · intmin · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · realmax · realmin · realsqrt · rescale · sign · single · sqrt · swapbytes · times · uint32

Reduction

all · any · bounds · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · maxk · mean · median · min · mink · movmax · movmean · movmedian · movmin · movprod · movstd · movsum · movvar · nnz · prod · rms · std · sum · trapz · var

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · decomposition · eig · eigs · lu · qr · svd

Solve

cond · det · inv · linsolve · norm · null · pinv · rank · rcond · rref · vecnorm

Symbolic

digits · int · limit · piecewise · sym · syms · vpa

Fft

fft · fft2 · fftshift · ifft · ifft2 · ifftshift

Discrete

lcm · primes

Ode

ode15s · ode23 · ode45

Open-source implementation

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

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.