Download or view correlationTest.frink in plain text format
/** This file tests the routines in correlation.frink. */
use correlation.frink
list = [1,2,1,4,1,8,1,2,1,4,1,8,1,2,1,4,1,8]
/** Calculate the autocorrelation in a repeating list with sub-patterns.
This should obtain an offset of 6 being the highest correlation. */
println["List: Perfect repetition with period 6"]
println[formatTable[autocorrelation[list]]]
println[]
println["List: Partial autocorrelation, perfect repetition with period 6"]
println[formatTable[partialAutocorrelation[list]]]
println[]
// The previous list with a bit of noise. Hopefully the period will still be 6
println["List2: imperfect repetition with period 6"]
list2 = [1,2,1,4,1,8,1,2,3,4,1,8,1,2,1,5,1,8]
println[formatTable[autocorrelation[list2]]]
println[]
// The list made very noisy because each point is perturbed by Gaussian noise
// centered around the true value with standard deviation = 1
// (Note that results will vary between runs.)
// Hopefully the strongest period will still be detected at 6.
list3 = new array
for a = list
list3.push[randomGaussian[a, 1]]
println["List3: noisy list with gaussian noise, period 6"]
//println["Noisy list is $list3"]
println["Results:"]
println[formatTable[autocorrelation[list3]]]
println[]
// Find when the digits in a number repeat themselves. The precision may have
// to be increased for larger denominators, as 1/n may repeat after as many as
// n-1 digits.
for b = 1 to 200
{
setPrecision[b*2+10]
r = autocorrelation[array[chars[toString[1./b]]]]
// println[r]
println["1/$b appears to repeat most strongly after " + r@0@0 + " terms."]
}
println[]
// Calculate the autocorrelation of a sinewave. The period should be close
// to the number divided by in the "step" below, although if the step is
// small, then the offsets near 1 will be the strongest (as the sine wave is
// shifted very slightly relative to itself.)
setPrecision[15]
c = new array
for i = 0 to 10 pi step (2 pi / 17.1)
c.push[sin[i]]
println["Autocorrelation of sinewave"]
println[formatTable[autocorrelation[c]]]
println["\nPartial Autocorrelation of sinewave"]
println[formatTable[partialAutocorrelation[c]]]
Download or view correlationTest.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20143 days, 10 hours, 9 minutes ago.