squareform — Convert between condensed distance vectors and square distance matrices.

squareform converts a condensed pairwise-distance vector into a square symmetric matrix, or converts a square symmetric distance matrix back into condensed form.

Syntax

Y = squareform(Z)
Y = squareform(Z, Force)

Inputs

NameTypeRequiredDefaultDescription
ZNumericArrayYesCondensed distance vector or square distance matrix.
forceStringScalarNoConversion force option: 'tomatrix' or 'tovector'.

Returns

NameTypeDescription
ZNumericArraySquare symmetric matrix or condensed distance vector.

Errors

IdentifierWhenMessage
RunMat:distance:InvalidArgumentInputs, dimensions, metrics, metric parameters, or selection options are malformed.distance helper: invalid argument
RunMat:distance:InternalRunMat cannot allocate or construct a distance output.distance helper: internal error

How squareform works

  • Vector inputs must have length n*(n-1)/2 for an integer n.
  • Matrix inputs must be square, symmetric, and have a zero diagonal.
  • squareform(Z,"tomatrix") forces vector-to-matrix conversion.
  • squareform(Z,"tovector") forces matrix-to-vector conversion.
  • Condensed vectors use the same pair ordering as pdist.

Examples

Expand a condensed vector

D = [5 4 7];
M = squareform(D)

Expected output:

M is a 3-by-3 symmetric matrix with zeros on the diagonal.

Convert back to condensed form

D2 = squareform(M)

Expected output:

D2 is [5 4 7].

Force output mode

M = squareform(D, "tomatrix")

Expected output:

The input is interpreted as a condensed distance vector.

Using squareform with coding agents

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

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

FAQ

Why does a matrix input need a zero diagonal?

A distance matrix represents distance from each observation to itself on the diagonal, which must be zero for condensed conversion.

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how squareform 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.