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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Z | NumericArray | Yes | — | Condensed distance vector or square distance matrix. |
force | StringScalar | No | — | Conversion force option: 'tomatrix' or 'tovector'. |
Returns
| Name | Type | Description |
|---|---|---|
Z | NumericArray | Square symmetric matrix or condensed distance vector. |
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:distance:InvalidArgument | Inputs, dimensions, metrics, metric parameters, or selection options are malformed. | distance helper: invalid argument |
RunMat:distance:Internal | RunMat cannot allocate or construct a distance output. | distance helper: internal error |
How squareform works
- Vector inputs must have length
n*(n-1)/2for an integern. - 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.
Related Stats functions
Ml
bayesopt · classify · confusionmat · crossvalind · cvpartition · fitclinear · fitctree · fitlm · kmeans · knnsearch · lasso · lassoglm · linkage · lscov · mnrfit · optimizableVariable · pdist · pdist2 · perfcurve · predict · regress · ridge · test · training · tsne
Summary
binocdf · boxplot · cdf · cdfplot · chi2cdf · corr · corrcoef · corrcov · cov · cov2corr · dummyvar · ecdf · filloutliers · fitdist · geomean · grpstats · harmmean · icdf · isoutlier · kstest · kurtosis · lsline · mad · mode · nanmax · normalize · normcdf · norminv · normpdf · onehotdecode · onehotencode · pdf · prctile · quantile · refline · rmse · skewness · tabulate · tcdf · tiedrank · tinv · tpdf · ttest2 · wblinv
Random
binornd · bootstrp · datasample · dividerand · exprnd · gamrnd · lhsdesign · mvnrnd · normrnd · random · randsample · rng · trnd · unidrnd · unifrnd · wblrnd
Hist
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how squareform is executed, line by line, in Rust.
- View the source for squareform 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.