author | francesco-ST <francesco.abbate@st.com> | 2010年11月04日 17:03:38 +0100 |
---|---|---|
committer | francesco-ST <francesco.abbate@st.com> | 2010年11月04日 17:03:38 +0100 |
commit | cf8aea387d1410c2b4198f7e06e45b4cd1bfe209 (patch) | |
tree | 43538aea5e80f89afbd37636e694eb70f4f45616 /examples/bspline.lua | |
parent | 37f3b5bf5f48bd060bf72e01e7086e2fc2b348ed (diff) | |
download | gsl-shell-cf8aea387d1410c2b4198f7e06e45b4cd1bfe209.tar.gz |
-rw-r--r-- | examples/bspline.lua | 45 |
diff --git a/examples/bspline.lua b/examples/bspline.lua index 6c6bb64f..0479e269 100644 --- a/examples/bspline.lua +++ b/examples/bspline.lua @@ -1,26 +1,33 @@ -n, br = 200, 10 +function demo1() + local n, br = 200, 10 -f = |x| cos(x) * exp(-0.1 * x) -xsmp = |i| 15 * (i-1) / (n-1) + local f = |x| cos(x) * exp(-0.1 * x) + local xsmp = |i| 15 * (i-1) / (n-1) -x, y = new(n, 1, |i| xsmp(i)), new(n, 1, |i| f(xsmp(i))) + local x, y = new(n, 1, |i| xsmp(i)), new(n, 1, |i| f(xsmp(i))) -r = rng() -w = new(n, 1) -for i=1,n do - local yi = y:get(i,1) - local sigma = 0.1 * yi - y:set(i,1, yi + rnd.gaussian(r, sigma)) - w:set(i,1, 1/sigma^2) -end + local r = rng() + local w = new(n, 1) + for i=1,n do + local yi = y:get(i,1) + local sigma = 0.1 * yi + y:set(i,1, yi + rnd.gaussian(r, sigma)) + w:set(i,1, 1/sigma^2) + end + + local b = bspline(0, 15, br) + local X = b:model(x) -b = bspline(0, 15, br) -X = b:model(x) + local c, cov = mlinear(X, y, w) -c, cov = mlinear(X, y, w) + local p = plot('B-splines curve approximation') + p:addline(xyline(x, mul(X, c))) + p:addline(xyline(x, y), 'blue', {{'marker', size=5}}) + p:show() + + return p +end -p = plot('B-splines curve approximation') -p:addline(xyline(x, mul(X, c))) -p:addline(xyline(x, y), 'blue', {{'marker', size=5}}) -p:show() +print([[ +demo1() - B-Spline approximation of noisy data]]) |