probabilistic programming in birch
play

Probabilistic Programming in Birch www.birch-lang.org Lawrence - PowerPoint PPT Presentation

Probabilistic Programming in Birch www.birch-lang.org Lawrence Murray Department of Information Technology, Uppsala University Outline 1. Graphical models probabilistic programs. 2. Birch: motivation and design. 3. Birch: language


  1. Methods in Birch Inference methods are also written in the Birch language. ▶ Currently available are: ▶ Analytical solutions ▶ Importance sampling ▶ Bootstrap particle filter ▶ Alive particle filter ▶ Auxiliary particle filter (automated) ▶ Rao–Blackwellized particle filter (automated) ▶ Not far off are: ▶ Particle MCMC methods ▶ Other MCMC methods. Lawrence Murray 19 / 30

  2. 3 Birch: language features Lawrence Murray 20 / 30

  3. Optionals Optionals allow variables to have a value of a particular type, or no value at all. ▶ They are used in other programming languages (e.g. Swift) to eliminate boilerplate that checks for null values, e.g. a function checking its arguments. ▶ In Birch, they are used for the same purpose, but also a second role: to represent missing values . Lawrence Murray 21 / 30

  4. Randoms Randoms are optionals to which a probability distribution can be attached. ▶ When they don’t have a value , the probability distribution can be used to automatically simulate a value . ▶ Once a random has a value, that value is final, it cannot be overwritten. Lawrence Murray 22 / 30

  5. Delayed sampling ▶ Randoms are essential for the delayed sampling mechanism within Birch. ▶ This is a heuristic algorithm for performing analytical optimizations at runtime. ▶ It automatically yields optimizations such as variable elimination/collapsing, Rao–Blackwellization and locally-optimal proposals. See: L. M. Murray, D. Lundén, J. Kudlicka, D. Broman, and T. B. Schön. Delayed sam- pling and automatic Rao–Blackwellization of probabilistic programs. Proceedings of the 21st International Conference on Artificial Intelligence and Statistics (AISTATS), 2018. URL https://arxiv.org/abs/1708.07787 Lawrence Murray 23 / 30

  6. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { y[n] ~ Gaussian(x, 1.0); } stdout.print(x); Lawrence Murray 24 / 30

  7. Delayed sampling example Code Checkpoint assume x x ~ Gaussian(0.0, 1.0); for (n in 1..N) { y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  8. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  9. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  10. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  11. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  12. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 1 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  13. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 1 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  14. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 1 x 1 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  15. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 2 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  16. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 2 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  17. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 2 x 2 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  18. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 3 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  19. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 3 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  20. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 3 x 3 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  21. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 4 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  22. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 4 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  23. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 4 x 4 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  24. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { observe y[n] y[n] ~ Gaussian(x, 1.0); } stdout.print(x); 5 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  25. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { y[n] ~ Gaussian(x, 1.0); } value x stdout.print(x); 5 x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  26. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  27. Delayed sampling example Code Checkpoint x ~ Gaussian(0.0, 1.0); for (n in 1..N) { y[n] ~ Gaussian(x, 1.0); } stdout.print(x); x y[1] y[2] y[3] y[4] y[5] Lawrence Murray 24 / 30

  28. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); Lawrence Murray 25 / 30

  29. Delayed sampling Code Checkpoint assume x[1] x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  30. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); observe y[1] y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  31. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); observe y[1] y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  32. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); observe y[1] y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  33. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); observe y[1] y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  34. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { assume x[t] x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  35. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  36. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 1 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  37. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 1 x[1] x[2] x[3] x[4] x[5] 1 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  38. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  39. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { assume x[t] x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  40. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  41. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 2 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  42. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 2 x[1] x[2] x[3] x[4] x[5] 2 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  43. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  44. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { assume x[t] x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  45. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  46. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 3 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  47. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 3 x[1] x[2] x[3] x[4] x[5] 3 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  48. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 4 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  49. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { assume x[t] x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 4 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  50. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 4 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  51. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 4 4 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  52. Delayed sampling Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 4 4 x[1] x[2] x[3] x[4] x[5] 4 y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  53. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); observe y[t] y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); 1 2 3 4 5 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  54. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } value x[1] stdout.print(x[1]); 1 2 3 5 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  55. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } value x[1] stdout.print(x[1]); 1 2 5 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  56. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } value x[1] stdout.print(x[1]); 1 5 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  57. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } value x[1] stdout.print(x[1]); 5 x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  58. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } value x[1] stdout.print(x[1]); x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  59. Delayed sampling: Kalman Filter Code Checkpoint x[1] ~ Gaussian(0.0, 1.0); y[1] ~ Gaussian(x[1], 1.0); for (t in 2..T) { x[t] ~ Gaussian(a*x[t - 1], 1.0); y[t] ~ Gaussian(x[t], 1.0); } stdout.print(x[1]); x[1] x[2] x[3] x[4] x[5] y[1] y[2] y[3] y[4] y[5] Lawrence Murray 25 / 30

  60. Delayed sampling Lawrence Murray 26 / 30

  61. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  62. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  63. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  64. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  65. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  66. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  67. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  68. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  69. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  70. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  71. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] 1 x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

  72. Delayed sampling x_n[1] x_n[2] x_n[3] x_n[4] x_n[5] 1 x_l[1] x_l[2] x_l[3] x_l[4] x_l[5] y_l[1] y_l[2] y_l[3] y_l[4] y_l[5] y_n[1] y_n[2] y_n[3] y_n[4] y_n[5] Lawrence Murray 26 / 30

Recommend


More recommend