diff --git a/content/SMHD.typ b/content/SMHD.typ index 15f175f..20ffdc5 100644 --- a/content/SMHD.typ +++ b/content/SMHD.typ @@ -172,3 +172,38 @@ Each measurement will be quantized with out quantizer $cal(E)$, returning a tupl $ K_i = cal(E)(s, m tilde(x_i)) = (k, h)_i $ Performing the operation of @eq:smhd_quant for our whole set of measurements will yield a vector of tuples $bold(K)$. +#pagebreak() +=== Reconstruction + +We already demonstrated the basic principle of the reconstruction phase in section @sect:tmhd, more specifically with @fig:tmhd_example_enroll and @fig:tmhd_example_reconstruct, which show the advantage of using more than one quantizer during reconstruction. + +We will call our repeated measurement of $tilde(x)$ that is subject to a certain error $tilde(x^*)$. +To perform reconstruction with $tilde(x^*)$, we will first need to find all $s$ quantizers for which we generated the helper data in the previous step. + +We have to distinguish two different cases for the value of $s$: +- $s$ is odd +- $s$ is even + +==== Even number of metrics + +If $s$ is even, we need to move our quantizer $s/2$ times some distance to the right and $s/2$ times some distance to the left. +We can define the ideal position for the quantizer bounds based on its corresponding metric as centered around the center of the related metric. + +We can find these new bounds graphically as depicted in @fig:smhd_find_bound_graph. We first determine the x-values of the centers of a metric (here M1, as shown with the arrows). We can then place the quantizer steps with step size $Delta$ (@eq:delta) evenly spaced around these points. + + + +#grid( + columns: (1fr, 0.1fr, 1fr), + [#scale(x: 70%, y: 70%)[ + #figure( + include("../graphics/quantizers/s-metric/2_2_find_quantizer.typ"), + caption: [Ideal centers and bounds for the M1 quantizer] + )]], + [#align(center)[#align(horizon)[#text(25pt)[$arrow.r.double$]]]], + [#scale(x: 70%, y: 70%)[ + #figure( + include("../graphics/quantizers/s-metric/2_2_found_quantizer1.typ"), + caption: [Quantizer for the first metric] + )]] +) diff --git a/content/introduction.typ b/content/introduction.typ index 42b59e3..c1f5a26 100644 --- a/content/introduction.typ +++ b/content/introduction.typ @@ -37,6 +37,6 @@ This transformation can be performed using the function $xi = tilde(x)$. The key Considering a normal distribution, the CDF is defined as $ xi(frac(x - mu, sigma)) = frac(1, 2)[1 + \e\rf(frac(x - mu, sigma sqrt(2)))] $ -=== ECDF +==== ECDF The eCDF is constructed through sorting the empirical measurements of a distribution @dekking2005modern. Although less accurate, this method allows a more simple and less computationally complex way to transform real valued measurements into the Tilde-Domain. We will mainly use the eCDF in @chap:smhd because of the difficulty of finding an analytical description for the CDF of a Gaussian-Mixture. diff --git a/graphics/quantizers/s-metric/2_2_find_quantizer.typ b/graphics/quantizers/s-metric/2_2_find_quantizer.typ new file mode 100644 index 0000000..9a742d0 --- /dev/null +++ b/graphics/quantizers/s-metric/2_2_find_quantizer.typ @@ -0,0 +1,46 @@ +#import "@preview/cetz:0.2.2": canvas, plot, draw, decorations, vector + +#let line_style = (stroke: (paint: black, thickness: 2pt)) +#let dashed = (stroke: (dash: "dashed")) +#let dashed2 = (stroke: (dash: "dotted")) +#let markings = (stroke: (paint: red, thickness: 2pt), fill: red) +#canvas({ + plot.plot(size: (8,6), name: "plot", + x-tick-step: none, + x-ticks: ((3/16, [3/16]), (7/16, [7/16]), (11/16, [11/16]), (15/16, [15/16])), + y-label: $cal(E)(2, 2, tilde(x))$, + x-label: $tilde(x)$, + y-tick-step: none, + y-ticks: ((0.125, [M1]) ,(0.25, [M2]),(0.375, [M1]) ,(0.5, [M2]),(0.625, [M1]) ,(0.75, [M2]),(0.875, [M1]) ,(1, [M2])), + axis-style: "left", + x-min: 0, + x-max: 1, + y-min: 0, + y-max: 1,{ + plot.add(((0,0), (0.125, 0.125), (0.25,0.25), (0.375, 0.375),(0.5,0.5), (0.625, 0.625),(0.75,0.75), (0.875, 0.875),(1, 1)), line: "vh", style: line_style) + plot.add-hline(0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, style: dashed) + plot.add-vline(3/16, 7/16, 11/16, 15/16, style: dashed2) + plot.add-anchor("q00", (1/16, 1/8)) + plot.add-anchor("h00", (1/16, 0)) + plot.add-anchor("q01", (5/16, 3/8)) + plot.add-anchor("h01", (5/16, 0)) + plot.add-anchor("q10", (9/16, 5/8)) + plot.add-anchor("h10", (9/16, 0)) + plot.add-anchor("q11", (13/16, 7/8)) + plot.add-anchor("h11", (13/16, 0)) + }) + decorations.brace((-0.9,0.63), (-0.9,1.63), name: "00") + decorations.brace((-0.9,2.13), (-0.9,3.13), name: "01") + decorations.brace((-0.9,3.63), (-0.9,4.63), name: "10") + decorations.brace((-0.9,5.13), (-0.9,6.13), name: "11") + + draw.content((v => vector.add(v, (-0.3, 0)), "00.west"), [00]) + draw.content((v => vector.add(v, (-0.3, 0)), "01.west"), [01]) + draw.content((v => vector.add(v, (-0.3, 0)), "10.west"), [10]) + draw.content((v => vector.add(v, (-0.3, 0)), "11.west"), [11]) + + draw.line("plot.q00", ((), "|-", "plot.h00"), mark: (end: ">")) + draw.line("plot.q01", ((), "|-", "plot.h01"), mark: (end: ">")) + draw.line("plot.q10", ((), "|-", "plot.h10"), mark: (end: ">")) + draw.line("plot.q11", ((), "|-", "plot.h11"), mark: (end: ">")) +}) diff --git a/graphics/quantizers/s-metric/2_2_found_quantizer1.typ b/graphics/quantizers/s-metric/2_2_found_quantizer1.typ new file mode 100644 index 0000000..9c8e469 --- /dev/null +++ b/graphics/quantizers/s-metric/2_2_found_quantizer1.typ @@ -0,0 +1,22 @@ +#import "@preview/cetz:0.2.2": canvas, plot + +#let line_style = (stroke: (paint: black, thickness: 2pt)) +#let dashed = (stroke: (dash: "dashed")) +#canvas({ + plot.plot(size: (8,6), + x-tick-step: none, + x-ticks: ((3/16, [3/16]), (7/16, [7/16]), (11/16, [11/16]), (15/16, [15/16])), + y-label: $cal(Q)(2, 1, tilde(x))$, + x-label: $tilde(x)$, + y-tick-step: none, + y-ticks: ((3/16, [00]), (7/16, [01]), (11/16, [10]), (15/16, [11])), + axis-style: "left", + x-min: 0, + x-max: 1, + y-min: 0, + y-max: 1,{ + plot.add(((0,3/16), (3/16,3/16), (7/16,7/16), (11/16,11/16), (15/16, 15/16), (15/16, 3/16), (1, 3/16)), line: "vh", style: line_style) + plot.add-hline(3/16, 7/16, 11/16, 15/16, style: dashed) + plot.add-vline(3/16, 7/16, 11/16, 15/16, style: dashed) + }) +}) diff --git a/main.pdf b/main.pdf index 91bd268..8d3ee5c 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/template/conf.typ b/template/conf.typ index 9b0d0a5..02c3c14 100644 --- a/template/conf.typ +++ b/template/conf.typ @@ -46,7 +46,8 @@ x: 2cm, ), header: [], - footer: [] + footer: [], + //numbering: "1" ) set par(justify: true) @@ -89,10 +90,35 @@ ] }) + + + set page(numbering: none) + contents_page() + + set page(numbering: none) pagebreak() + set page( + paper: "a4", + margin: ( + top: 3cm, + bottom: 3cm, + x: 2cm, + ), + header: [], + footer: none, + ) + + set page(footer: locate( + loc => if calc.even(loc.page()) { + align(right, counter(page).display("1")); + } else { + align(left, counter(page).display("1")); + } + )) + doc }