Documentation |
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 | S-by-R weight matrix |
P | R-by-Q matrix of Q input (column) vectors |
FP | Struct of function parameters (optional, ignored) |
and returns the S-by-Q 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-by-R].
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 | N-by-S matrix of neuron positions |
and returns the S-by-S matrix of distances.
info = dist('code') returns information about this function. The following codes are supported:
'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 three-dimensional 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.inputWeight{i,j}.weightFcn to 'dist'. For a layer weight, set net.layerWeight{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.