FED-STD 1016
3.5.3 Interpolation. Anoninteger-delay adaptive codeisinterpolated fromthe nearest lower-valued
integer-delay code (e.g., noninteger-delay code 49.67 is determined by interpolating from
integer-delay code 49). The 60 elements of the integer-delay code are first renumbered as RO . . . R59
for purposes of description, where RO is normally the most negatively numbered (i.e., most delayed)
element under the previous numbering system (i.e., -1 to - 147),
is the next most negatively
numbered element, etc. For example, for integer-delay code 66, RO=element -66, R 1 =element -65,
and R59=element -7. For integer-delay code 21, because of the repetition within lower numbered
integer-delay codes, RO=element -21,
-20, R58=element -4, and R59=element -3.
Likewise, for integer-delay code 58,
-58,
-57,
-1,
-58, and R59=element -57.
The next step in explaining the process of interpolation is to show the computation of the weighting
factors. The following FORTRAN program gives interpolation weighting factors for the interpolation
of even numbers of points (N) equal to and less than 40. Note: interpolation with less than 8 points
is not recommended and interpolation with other than 40 points is only for preliminary computations
during voice analysis.
program weights
implicit none
integer N, nf, i, j, k
parameter (N=40, nf=5)
real
pi
data f/O.25, 0.33333333, 0.5, 0.66666667, 0.75/
pi =
.0)
O, file= 'weights', status= 'new')
do 10 k = -6*N, 6*N
h(k) = 0.54 + 0.46*
10
continue
do 30 i = 1, nf
d o 2 0 j = -N/2, N/2-l
i) =
i))))
i)))/
)))
20
continue
30
continue
write (10,69) f
d o 4 0 j = -N/2, N/2-l
write (10,70) j, (w(j, k), k = 1, nf)
40
continue
69
format (7x, 5f14. 5)
70
format(3x, i4,
end
For N-point interpolation, the above program yields N weighting factors, numbered from -N/2 to
N/2-l. Asthefinal step showing theprocess ofinterpolation, these weighting factors are multiplied
by the values of the adaptive code elements within a "window" around the element being interpolated
(R). The sum of these multiplications is the interpolated value of that element (R'). For example,
for 40 point interpolation, to find noninteger-delay code 66.67 (i.e., integer= 66,
.67), element
-66 becomes RO. Weighting factor -20 (i.e., -.001 1766) is multiplied by the value of element -86,
weighting factor -19 (i.e., .0014386) is multiplied by the value of element -85, . . . . weighting factor
O (i.e., .41245) is multiplied by the value of element -66, . . . , up to weighting factor 19 (i.e.,
-.001 1302) being multiplied by the value of element -47, The sum of these becomes the interpolated
value of element -66 (i.e., R'O). The same operation takes place in a "window" around the remaining
However, in the example given, the samples run out beyond R46 (i.e., for R46
elements
-
weighting factor 19 is multiplied by the value of element - 1). In such cases, the previously
interpolated values for elements RO, Rl, R2, . . . (i.e., R'0, R*1, R'2, . . . ) are used to complete
interpolation of the remaining elements. Thus, in the example given, when interpolating R58 (i.e.,
element -8), weighting factor -20 is multiplied by the value of element -28 and weighting factor 19