Let's jump in, and start with defining our spike waves:
spikes |wave-1> => range(|0>,|1000>,|1>) spikes |wave-2> => range(|0>,|1000>,|2>) spikes |wave-3> => range(|0>,|1000>,|3>) spikes |wave-4> => range(|0>,|1000>,|4>) spikes |wave-5> => range(|0>,|1000>,|5>) spikes |wave-6> => range(|0>,|1000>,|6>) spikes |wave-7> => range(|0>,|1000>,|7>) spikes |wave-8> => range(|0>,|1000>,|8>) spikes |wave-9> => range(|0>,|1000>,|9>) spikes |wave-10> => range(|0>,|1000>,|10>) spikes |wave-11> => range(|0>,|1000>,|11>) spikes |wave-12> => range(|0>,|1000>,|12>) spikes |wave-13> => range(|0>,|1000>,|13>) spikes |wave-14> => range(|0>,|1000>,|14>) spikes |wave-15> => range(|0>,|1000>,|15>) spikes |wave-16> => range(|0>,|1000>,|16>) spikes |wave-17> => range(|0>,|1000>,|17>) spikes |wave-18> => range(|0>,|1000>,|18>) spikes |wave-19> => range(|0>,|1000>,|19>) spikes |wave-20> => range(|0>,|1000>,|20>) spikes |empty> => 0 spikes |wave-1>Next, we need to make use of the smooth[dx] operator. Essentially it maps:
f(x) -> f(x - dx)/4 + f(x)/2 + f(x + dx)/4Here are a couple of examples to try and show how it works in practice:
sa: smooth[0.25] |10> 0.25|9.75> + 0.5|10.0> + 0.25|10.25> sa: bar-chart[50] smooth[0.25] |10> ---------- 9.75 : ||||||||||||||||||||||||| 10.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 10.25 : ||||||||||||||||||||||||| ---------- |bar chart> sa: bar-chart[50] smooth[0.25]^5 |10> ---------- 8.75 : 9.0 : | 9.25 : |||||||| 9.5 : ||||||||||||||||||||||| 9.75 : ||||||||||||||||||||||||||||||||||||||||| 10.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 10.25 : ||||||||||||||||||||||||||||||||||||||||| 10.5 : ||||||||||||||||||||||| 10.75 : |||||||| 11.0 : | 11.25 : ---------- |bar chart>Basically maps spikes to Gaussian smoothed spikes. Which is exactly what we need for this post. Now, let's generate our smoothed spike waves:
smooth-spike-op |*> #=> smooth[0.25]^5 spikes |_self> map[smooth-spike-op,smoothed-spikes] rel-kets[spikes]Now, define a couple of operators:
-- the float-value operator, to define our sort order: float-value |*> #=> pop-float clean |_self> -- the show the wave operator: show-smoothed-spike-wave |*> #=> bar-chart[50] select[1,45] sort-by[float-value] smoothed-spikes (|empty> + |_self>)Now, look at the waves, and note they are no longer spikes, but Gaussian smoothed spikes:
sa: show-smoothed-spike-wave |wave-1> ---------- -1.25 : -1.0 : | -0.75 : |||||||| -0.5 : |||||||||||||||||||||| -0.25 : |||||||||||||||||||||||||||||||||||||| 0.0 : |||||||||||||||||||||||||||||||||||||||||||||||| 0.25 : |||||||||||||||||||||||||||||||||||||||||||||| 0.5 : |||||||||||||||||||||||||||||||||||||||||||| 0.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 1.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 1.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 1.5 : |||||||||||||||||||||||||||||||||||||||||||| 1.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 2.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 2.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 2.5 : |||||||||||||||||||||||||||||||||||||||||||| 2.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 3.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 3.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 3.5 : |||||||||||||||||||||||||||||||||||||||||||| 3.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 4.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 4.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 4.5 : |||||||||||||||||||||||||||||||||||||||||||| 4.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 5.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 5.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 5.5 : |||||||||||||||||||||||||||||||||||||||||||| 5.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 6.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 6.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 6.5 : |||||||||||||||||||||||||||||||||||||||||||| 6.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 7.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 7.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 7.5 : |||||||||||||||||||||||||||||||||||||||||||| 7.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 8.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 8.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 8.5 : |||||||||||||||||||||||||||||||||||||||||||| 8.75 : ||||||||||||||||||||||||||||||||||||||||||||||| 9.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 9.25 : ||||||||||||||||||||||||||||||||||||||||||||||| 9.5 : |||||||||||||||||||||||||||||||||||||||||||| 9.75 : ||||||||||||||||||||||||||||||||||||||||||||||| ---------- sa: show-smoothed-spike-wave |wave-2> ---------- -1.25 : -1.0 : | -0.75 : |||||||| -0.5 : ||||||||||||||||||||||| -0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.5 : ||||||||||||||||||||||| 0.75 : ||||||||| 1.0 : ||| 1.25 : ||||||||| 1.5 : ||||||||||||||||||||||| 1.75 : ||||||||||||||||||||||||||||||||||||||||| 2.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 2.25 : ||||||||||||||||||||||||||||||||||||||||| 2.5 : ||||||||||||||||||||||| 2.75 : ||||||||| 3.0 : ||| 3.25 : ||||||||| 3.5 : ||||||||||||||||||||||| 3.75 : ||||||||||||||||||||||||||||||||||||||||| 4.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 4.25 : ||||||||||||||||||||||||||||||||||||||||| 4.5 : ||||||||||||||||||||||| 4.75 : ||||||||| 5.0 : ||| 5.25 : ||||||||| 5.5 : ||||||||||||||||||||||| 5.75 : ||||||||||||||||||||||||||||||||||||||||| 6.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 6.25 : ||||||||||||||||||||||||||||||||||||||||| 6.5 : ||||||||||||||||||||||| 6.75 : ||||||||| 7.0 : ||| 7.25 : ||||||||| 7.5 : ||||||||||||||||||||||| 7.75 : ||||||||||||||||||||||||||||||||||||||||| 8.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 8.25 : ||||||||||||||||||||||||||||||||||||||||| 8.5 : ||||||||||||||||||||||| 8.75 : ||||||||| 9.0 : ||| 9.25 : ||||||||| 9.5 : ||||||||||||||||||||||| 9.75 : ||||||||||||||||||||||||||||||||||||||||| ---------- sa: show-smoothed-spike-wave |wave-3> ---------- -1.25 : -1.0 : | -0.75 : |||||||| -0.5 : ||||||||||||||||||||||| -0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.5 : ||||||||||||||||||||||| 0.75 : |||||||| 1.0 : | 1.25 : 1.5 : 1.75 : 2.0 : | 2.25 : |||||||| 2.5 : ||||||||||||||||||||||| 2.75 : ||||||||||||||||||||||||||||||||||||||||| 3.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 3.25 : ||||||||||||||||||||||||||||||||||||||||| 3.5 : ||||||||||||||||||||||| 3.75 : |||||||| 4.0 : | 4.25 : 4.5 : 4.75 : 5.0 : | 5.25 : |||||||| 5.5 : ||||||||||||||||||||||| 5.75 : ||||||||||||||||||||||||||||||||||||||||| 6.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 6.25 : ||||||||||||||||||||||||||||||||||||||||| 6.5 : ||||||||||||||||||||||| 6.75 : |||||||| 7.0 : | 7.25 : 7.5 : 7.75 : 8.0 : | 8.25 : |||||||| 8.5 : ||||||||||||||||||||||| 8.75 : ||||||||||||||||||||||||||||||||||||||||| 9.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 9.25 : ||||||||||||||||||||||||||||||||||||||||| 9.5 : ||||||||||||||||||||||| 9.75 : |||||||| ---------- sa: show-smoothed-spike-wave |wave-7> ---------- -1.25 : -1.0 : | -0.75 : |||||||| -0.5 : ||||||||||||||||||||||| -0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.5 : ||||||||||||||||||||||| 0.75 : |||||||| 1.0 : | 1.25 : 1.5 : 1.75 : 2.0 : 2.25 : 2.5 : 2.75 : 3.0 : 3.25 : 3.5 : 3.75 : 4.0 : 4.25 : 4.5 : 4.75 : 5.0 : 5.25 : 5.5 : 5.75 : 6.0 : | 6.25 : |||||||| 6.5 : ||||||||||||||||||||||| 6.75 : ||||||||||||||||||||||||||||||||||||||||| 7.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 7.25 : ||||||||||||||||||||||||||||||||||||||||| 7.5 : ||||||||||||||||||||||| 7.75 : |||||||| 8.0 : | 8.25 : 8.5 : 8.75 : 9.0 : 9.25 : 9.5 : 9.75 : ----------OK. All nice and pretty. Now we want to look at their similarities. Presumably, for integers they should give very similar similarities as the single spike versions. Only for off-integer spikes should there be a big difference. Let's see what the data says:
-- define our show similarity operator: show-smoothed-similarity |*> #=> bar-chart[50] ket-sort similar-input[smoothed-spikes] smoothed-spikes |_self> -- now put it to use: sa: show-smoothed-similarity |wave-1> ---------- wave-1 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-2 : |||||||||||||||||||||||||||||||||||| wave-3 : |||||||||||||||||||||||||| wave-4 : |||||||||||||||||||| wave-5 : ||||||||||||||||| wave-6 : ||||||||||||||| wave-7 : ||||||||||||| wave-8 : ||||||||||| wave-9 : |||||||||| wave-10 : ||||||||| wave-11 : |||||||| wave-12 : |||||||| wave-13 : ||||||| wave-14 : ||||||| wave-15 : |||||| wave-16 : |||||| wave-17 : |||||| wave-18 : ||||| wave-19 : ||||| wave-20 : ||||| ---------- sa: show-smoothed-similarity |wave-2> ---------- wave-1 : |||||||||||||||||||||||||||||||||||| wave-2 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-3 : ||||||||||||||||||||||||| wave-4 : ||||||||||||||||||||||||| wave-5 : |||||||||||||||| wave-6 : ||||||||||||||||| wave-7 : |||||||||||| wave-8 : |||||||||||| wave-9 : |||||||||| wave-10 : |||||||||| wave-11 : |||||||| wave-12 : |||||||| wave-13 : ||||||| wave-14 : ||||||| wave-15 : |||||| wave-16 : |||||| wave-17 : ||||| wave-18 : ||||| wave-19 : ||||| wave-20 : ||||| ---------- sa: show-smoothed-similarity |wave-3> ---------- wave-1 : |||||||||||||||||||||||||| wave-2 : ||||||||||||||||||||||||| wave-3 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-4 : |||||||||||||||||| wave-5 : ||||||||||||||| wave-6 : ||||||||||||||||||||||||| wave-7 : ||||||||||| wave-8 : |||||||||| wave-9 : |||||||||||||||| wave-10 : |||||||| wave-11 : |||||||| wave-12 : |||||||||||| wave-13 : ||||||| wave-14 : |||||| wave-15 : |||||||||| wave-16 : ||||| wave-17 : ||||| wave-18 : |||||||| wave-19 : ||||| wave-20 : |||| ---------- sa: show-smoothed-similarity |wave-4> ---------- wave-1 : |||||||||||||||||||| wave-2 : ||||||||||||||||||||||||| wave-3 : |||||||||||||||||| wave-4 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-5 : ||||||||||||||| wave-6 : ||||||||||||||||| wave-7 : ||||||||||| wave-8 : ||||||||||||||||||||||||| wave-9 : ||||||||| wave-10 : |||||||||| wave-11 : ||||||| wave-12 : |||||||||||||||| wave-13 : |||||| wave-14 : ||||||| wave-15 : ||||| wave-16 : |||||||||||| wave-17 : ||||| wave-18 : ||||| wave-19 : ||||| wave-20 : |||||||||| ---------- sa: show-smoothed-similarity |wave-5> ---------- wave-1 : ||||||||||||||||| wave-2 : |||||||||||||||| wave-3 : ||||||||||||||| wave-4 : ||||||||||||||| wave-5 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-6 : |||||||||||| wave-7 : |||||||||| wave-8 : ||||||||| wave-9 : |||||||| wave-10 : ||||||||||||||||||||||||| wave-11 : ||||||| wave-12 : |||||| wave-13 : |||||| wave-14 : |||||| wave-15 : |||||||||||||||| wave-16 : ||||| wave-17 : ||||| wave-18 : ||||| wave-19 : |||| wave-20 : |||||||||||| ---------- sa: show-smoothed-similarity |wave-6> ---------- wave-1 : ||||||||||||||| wave-2 : ||||||||||||||||| wave-3 : ||||||||||||||||||||||||| wave-4 : ||||||||||||||||| wave-5 : |||||||||||| wave-6 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-7 : |||||||||| wave-8 : |||||||||||| wave-9 : |||||||||||||||| wave-10 : |||||||||| wave-11 : ||||||| wave-12 : ||||||||||||||||||||||||| wave-13 : |||||| wave-14 : ||||||| wave-15 : |||||||||| wave-16 : |||||| wave-17 : |||| wave-18 : |||||||||||||||| wave-19 : |||| wave-20 : ||||| ---------- sa: show-smoothed-similarity |wave-7> ---------- wave-1 : ||||||||||||| wave-2 : |||||||||||| wave-3 : ||||||||||| wave-4 : ||||||||||| wave-5 : |||||||||| wave-6 : |||||||||| wave-7 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-8 : ||||||||| wave-9 : |||||||| wave-10 : ||||||| wave-11 : ||||||| wave-12 : |||||| wave-13 : |||||| wave-14 : ||||||||||||||||||||||||| wave-15 : ||||| wave-16 : ||||| wave-17 : ||||| wave-18 : |||| wave-19 : |||| wave-20 : |||| ---------- sa: show-smoothed-similarity |wave-8> ---------- wave-1 : ||||||||||| wave-2 : |||||||||||| wave-3 : |||||||||| wave-4 : ||||||||||||||||||||||||| wave-5 : ||||||||| wave-6 : |||||||||||| wave-7 : ||||||||| wave-8 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-9 : |||||||| wave-10 : |||||||||| wave-11 : ||||||| wave-12 : |||||||||||||||| wave-13 : |||||| wave-14 : ||||||| wave-15 : ||||| wave-16 : ||||||||||||||||||||||||| wave-17 : |||| wave-18 : ||||| wave-19 : |||| wave-20 : |||||||||| ---------- sa: show-smoothed-similarity |wave-9> ---------- wave-1 : |||||||||| wave-2 : |||||||||| wave-3 : |||||||||||||||| wave-4 : ||||||||| wave-5 : |||||||| wave-6 : |||||||||||||||| wave-7 : |||||||| wave-8 : |||||||| wave-9 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-10 : ||||||| wave-11 : ||||||| wave-12 : |||||||||||| wave-13 : |||||| wave-14 : ||||| wave-15 : |||||||||| wave-16 : |||| wave-17 : |||| wave-18 : ||||||||||||||||||||||||| wave-19 : |||| wave-20 : |||| ---------- sa: show-smoothed-similarity |wave-10> ---------- wave-1 : ||||||||| wave-2 : |||||||||| wave-3 : |||||||| wave-4 : |||||||||| wave-5 : ||||||||||||||||||||||||| wave-6 : |||||||||| wave-7 : ||||||| wave-8 : |||||||||| wave-9 : ||||||| wave-10 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-11 : ||||||| wave-12 : |||||||| wave-13 : ||||| wave-14 : ||||||| wave-15 : |||||||||||||||| wave-16 : |||||| wave-17 : |||| wave-18 : |||||| wave-19 : |||| wave-20 : ||||||||||||||||||||||||| ---------- sa: show-smoothed-similarity |wave-11> ---------- wave-1 : |||||||| wave-2 : |||||||| wave-3 : |||||||| wave-4 : ||||||| wave-5 : ||||||| wave-6 : ||||||| wave-7 : ||||||| wave-8 : ||||||| wave-9 : ||||||| wave-10 : ||||||| wave-11 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-12 : |||||| wave-13 : ||||| wave-14 : ||||| wave-15 : ||||| wave-16 : |||| wave-17 : |||| wave-18 : |||| wave-19 : |||| wave-20 : |||| ---------- sa: show-smoothed-similarity |wave-12> ---------- wave-1 : |||||||| wave-2 : |||||||| wave-3 : |||||||||||| wave-4 : |||||||||||||||| wave-5 : |||||| wave-6 : ||||||||||||||||||||||||| wave-7 : |||||| wave-8 : |||||||||||||||| wave-9 : |||||||||||| wave-10 : |||||||| wave-11 : |||||| wave-12 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-13 : |||||| wave-14 : ||||||| wave-15 : |||||||||| wave-16 : |||||||||||| wave-17 : |||| wave-18 : |||||||||||||||| wave-19 : |||| wave-20 : |||||||||| ----------Which is roughly the same as the spike version, though wave-2 looks distinctly different, and wave-k for prime k have slightly higher similarity than in the spike version. But the thing we really want to test are non-integer wave's. Here is |wave-9.75>:
sa: show-smoothed-spike-wave |wave-9.75> ---------- -1.25 : -1.0 : | -0.75 : |||||||| -0.5 : ||||||||||||||||||||||| -0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.0 : |||||||||||||||||||||||||||||||||||||||||||||||||| 0.25 : ||||||||||||||||||||||||||||||||||||||||| 0.5 : ||||||||||||||||||||||| 0.75 : |||||||| 1.0 : | 1.25 : 1.5 : 1.75 : 2.0 : 2.25 : 2.5 : 2.75 : 3.0 : 3.25 : 3.5 : 3.75 : 4.0 : 4.25 : 4.5 : 4.75 : 5.0 : 5.25 : 5.5 : 5.75 : 6.0 : 6.25 : 6.5 : 6.75 : 7.0 : 7.25 : 7.5 : 7.75 : 8.0 : 8.25 : 8.5 : 8.75 : | 9.0 : |||||||| 9.25 : ||||||||||||||||||||||| 9.5 : ||||||||||||||||||||||||||||||||||||||||| 9.75 : |||||||||||||||||||||||||||||||||||||||||||||||||| ---------- sa: show-smoothed-similarity |wave-9.75> ---------- wave-1 : |||||||||| wave-2 : ||||||||| wave-3 : |||||||| wave-4 : |||||||| wave-5 : |||||||| wave-6 : ||||||| wave-7 : ||||||| wave-8 : ||||||| wave-9 : ||||||| wave-9.75 : |||||||||||||||||||||||||||||||||||||||||||||||||| wave-10 : |||||| wave-11 : |||||| wave-12 : |||||| wave-13 : |||||||||||| wave-14 : ||||| wave-15 : ||||| wave-16 : |||| wave-17 : |||| wave-18 : |||| wave-19 : |||| wave-20 : |||| ----------vs the spike similarity:
sa: show-similarity |wave-9.75> ---------- wave-9.75 : |||||||||||||||||||||||||||||||||||||||||||||||||| ----------Which is pretty much my point. The smoothed spike transform is more tolerant of the spikes not being at exact integer spacing's. And for that reason, in practice should be more useful, because brains are not expected to be ultra precise.
BTW, we have two parameters we can tweak. Recall the smooth spike operator:
smooth-spike-op |*> #=> smooth[0.25]^5 spikes |_self>In particular, note the smooth[dx]^k term. We can tweak both dx and k, with the result that we can tweak the shape/width of our Gaussian spikes. For example keeping track of music would require narrower spikes than in other contexts.