-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
134 lines (112 loc) · 6.22 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
********************************************
********************************************
README
********************************************
********************************************
NOT ALL COMMENTS IN CODE ARE UP TO DATE. This file and README_EXAMPLE
are currently the best guides.
The program is intended primarily to be used for finding, according to
our model, the outcome of the execution of a speech goal, where the
user provides:
Motor space and perceptual space, populated with clusters
The motor goal i.e. the silhouette
The perceptual goal i.e. the exemplar
Optionally, a few parameters
This model can be used with real data, or it can be used with made-up
values as a demonstration of how it works/visualization of the model.
A few sets of made-up values are provided for the convenience of the user.
Additionally, parameters that are embedded deeper in the model, or more
fundemental aspects of how the model works, may be changed by changing
the code directly. An effort has been made to make the code
straightforward, readable, and heavily commented so that this is possible.
A more narrative description is given below; if you would prefer to
start exploring by running code immediately, checkout the file
README_EXAMPLE.m
If someone wants to use this program to find the outcome of the
execution of a speech goal according to our model, they will need to
first decide what the Space is. A Space object is the computational
model's representation of motor space and perceptual space as well as
the link between them. In particular, the Space consists of
- A Cluster array
- A SpaceTransformation
That is, to make an instance space of type Space, we write:
space = Space(clusterArray, spaceTransformation)
Each Cluster is defined in terms of the motor and perceptual
coordinates of its Junctures -- so the user must decide what the motor
dimensions andthe perceptual dimensions are, and then what the
Junctures in each Clusterare in terms of these coordinates. We write:
cluster = Cluster(MotorCoordinateMatrix, PerceptualCoordinateMatrix).
There are also some optional arguments that will determine which
dimensions of the Cluster are used when graphing (detailed in the
Cluster file).
The SpaceTransformation is the function that takes a motor coordinates
as an input and gives the corresponding perceptual coordinates as the
output. This transformation is not known to the speaker, but it must be
known to the modeler in order to model the consequences of perceptual
outcomes from motor actions (essentially in order to simulate the
perceptual consequences of speaking).
spaceTransformation = SpaceTransformation(@TransformationFunction)
where TransformationFunction is a matlab function. The "@" in the
front is necessary since it is a function. TransformationFunction must
be defined in a place that is accessible to the above definition -- in
the same file, or as the main function in a file in the path. That
definition will look like:
function PerceptualCoordinates = TransformationFunction(MotorCoordinates)
% definition goes here -- e.g.
% PerceptualCoordinates = MotorCoordinates;
% OR
% PerceptualCoordinates = (2 * MotorCoordinates) - 5;
% OR
% PerceptualCoordinates(1) = MotorCoordinates(1) * MotorCoordinates(2);
% PerceptualCoordinates(2) = MotorCoordinates(3)^2 - MotorCoordinates(2);
end
A specific space will be specified for each goal, since a goal cannot
exist without the context of the space (linked perceptual and motor
spaces) in which the goal lies. Other than the space, the other two
things that a goal consists of are
- a silhouette (MotorSilhouette object; the motor goal)
- an exemplar (PerceptualTrajectory object; the percdeptual goal).
That is, we write
goal = Goal(space, silhouette, exemplar)
We've covered what space looks like. Now we'll describe the
silhouette. The silhouette consists of a series of T regions, where
each region corresponds to a particular time in the silhouette. We
write
silhouette = MotorSilhouette(MotorRegions)
where, for example, MotorRegions = [Region1 Region2 Region3] (with more
or fewer regions). Region1, Region2, and Region3 are all objects of
type WeightedMotorSimplicialComplex, which is an object that specifies
a homogenous simplicial complex in motor space along with a weight
assigned to each simplex.
Finally, the exemplar is a perceptual trajectory -- that is, a series
of points in perceptual space. We write exemplar =
PerceptualTrajectory(PerceptualCoordinateMatrix), and there are also
some optional arguments, detailed in the PerceptualTrajectory file.
Once the goal is defined, now it is possible to use the program to find
the results of executing that goal. There are just a few more
parameters that need to be chosen first, and this will be done by
creating an ExecutionParameters object:
executionParameters = ExecutionParameters(LookBackAmount, LookAheadAmount)
If the code were to be modified to include more global-speaking-setting
type parameters (for example, speaking rate, clarity of speech, etc.)
this object would be the appropriate place to add those parameters
to -- they don't belong in the space itself, and they don't belong in
the goal -- they really are external to those things, and they belong
in the set of parameters that are independent from those things and
that could be chosen differently for different utterances based on the
same goal.
To find the final results, we write
[AverageJunctureEstimates, FinalJunctureActivationValues] =
goal.SimpleMacroEstimates(executionParameters)
FinalJunctureActivationValues is a matrix where
FinalJunctureActivationValues(j, t) is the activation of the jth
juncture at the tth time step. AverageJunctureEstimates is a vector
where AverageJunctureEstimates(t) is the estimated location in motor
space and perceptual space at time t, written in juncture format. That
is, AverageJunctureEstimates(t) is a juncture J such that
J.MotorPoint.Coordinates is the estimated motor coordinates at time t,
and J.PerceptualPoint.Coordinates is the estimated perceptual
coordinates at time t.
This is all the information that is necessary to plot the results,
which can be plotted using a FullFigureData object -- this is done in
the README_EXAMPLE file.