Euclidean distance weight function
Z = dist(W,P,FP)
dim = dist('size',S,R,FP)
dw = dist('dw',W,P,Z,FP)
D = dist(pos)
info = dist('code
')
Weight functions apply weights to an input to get weighted inputs.
Z = dist(W,P,FP)
takes these inputs,
W 

P 

FP  Struct of function parameters (optional, ignored) 
and returns the S
byQ
matrix
of vector distances.
dim = dist('size',S,R,FP)
takes the layer
dimension S
, input dimension R
,
and function parameters, and returns the weight size [S
byR
].
dw = dist('dw',W,P,Z,FP)
returns the derivative
of Z
with respect to W
.
dist
is also a layer distance function which
can be used to find the distances between neurons in a layer.
D = dist(pos)
takes one argument,
pos 

and returns the S
byS
matrix
of distances.
info = dist('
returns
information about this function. The following codes are supported: code
')
'deriv'  Name of derivative function 
'fullderiv'  Full derivative = 1, linear derivative = 0 
'pfullderiv'  Input: reduced derivative = 2, full derivative = 1, linear derivative = 0 
'name'  Full name 
'fpnames'  Returns names of function parameters 
'fpdefaults'  Returns default function parameters 
Here you define a random weight matrix W
and
input vector P
and calculate the corresponding
weighted input Z
.
W = rand(4,3); P = rand(3,1); Z = dist(W,P)
Here you define a random matrix of positions for 10 neurons arranged in threedimensional space and find their distances.
pos = rand(3,10); D = dist(pos)
You can create a standard network that uses dist
by
calling newpnn
or newgrnn
.
To change a network so an input weight uses dist
,
set net.inputWeights{i,j}.weightFcn
to 'dist'
.
For a layer weight, set net.layerWeights{i,j}.weightFcn
to 'dist'
.
To change a network so that a layer's topology uses dist
,
set net.layers{i}.distanceFcn
to 'dist'
.
In either case, call sim
to simulate the
network with dist
.