Learn R Programming

RiemBaseExt (version 0.1.2)

rstat.pdist: Pairwise Distance of Data on Manifolds

Description

For two points \(x,y \in \mathcal{M}\), two modes of distances are available; intrinsic for geodesic distance on the manifold and extrinsic for standard norm after equivariant embedding into Euclidean space.

Usage

rstat.pdist(input, type = c("intrinsic", "extrinsic"), as.dist = TRUE)

Arguments

input

a S3 object of riemdata class. See riemfactory for more details.

type

type of distance, either "intrinsic" or "extrinsic".

as.dist

logical; if TRUE, it returns dist object, else it returns a symmetric matrix.

Value

a S3 dist object or symmetric matrix of pairwise distances according to type parameter.

Examples

Run this code
# NOT RUN {
### Generate 50 data points on Sphere S^2 near (0,0,1).
ndata = 50
theta = seq(from=-0.99,to=0.99,length.out=ndata)*pi
tmpx  = cos(theta) + rnorm(ndata,sd=0.1)
tmpy  = sin(theta) + rnorm(ndata,sd=0.1)

### Wrap it as 'riemdata' class
data  = list()
for (i in 1:ndata){
  tgt = c(tmpx[i],tmpy[i],1)
  data[[i]] = tgt/sqrt(sum(tgt^2)) # project onto Sphere
}
spdata = RiemBase::riemfactory(data, name="sphere")

### Compute Two Types of Distances and Visualize
dist.int = rstat.pdist(spdata, type="intrinsic", as.dist=FALSE)
dist.ext = rstat.pdist(spdata, type="extrinsic", as.dist=FALSE)

### Visualize
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,2))
image(dist.int, main="intrinsic")
image(dist.ext, main="extrinsic")
par(opar)

# }

Run the code above in your browser using DataLab