Skip to content

Instantly share code, notes, and snippets.

@qpleple
Last active May 10, 2018 00:29
Show Gist options
  • Save qpleple/4b5a4e867140b581119cc18420ffb966 to your computer and use it in GitHub Desktop.
Save qpleple/4b5a4e867140b581119cc18420ffb966 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"from matplotlib.pyplot import *\n",
"def color(i): return get_cmap(\"tab20\").colors[i % 20]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Method rotation invariant"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"E2 = 0.369770999748\n",
"E1 = 1.60000333999\n",
"E2 = 0.369770999748\n",
"E1 = 1.60000333999\n"
]
},
{
"data": {
"image/png": "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\nZEnYU54AAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b46e710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure(figsize=(8, 8))\n",
"u = np.linspace(0, len(x)-1, 1000)\n",
"\n",
"# -------------\n",
"# Blue figure\n",
"# -------------\n",
"\n",
"# 5 points in V shape\n",
"x = [-1, -0.5, 0, 0.5, 1]\n",
"y = [1, 0.5, 0, 0.5, 1]\n",
"plot(x, y, 'o-', color=color(0))\n",
"\n",
"# Fitting a parabola\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 2))\n",
"py = np.poly1d(np.polyfit(t, y, 2))\n",
"plot(px(u), py(u), color=color(1))\n",
"\n",
"# Error of the parabola fitting\n",
"print \"E2 =\", sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"for t in range(len(x)):\n",
" t_closest = np.argmin(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2))\n",
" plot([x[t], px(u[t_closest])], [y[t], py(u[t_closest])], 'r', lw=1)\n",
"\n",
"# Fitting a line\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 1))\n",
"py = np.poly1d(np.polyfit(t, y, 1))\n",
"plot(px(u), py(u), '--', color=color(1))\n",
"\n",
"# Error of the line fitting\n",
"print \"E1 =\", sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"for t in range(len(x)):\n",
" t_closest = np.argmin(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2))\n",
" plot([x[t], px(u[t_closest])], [y[t], py(u[t_closest])], 'r--', lw=1)\n",
"\n",
"# -------------\n",
"# Green figure\n",
"# -------------\n",
"\n",
"\n",
"# Rotation of the 5 points by an angle theta and translation of [1.5, 1.5]\n",
"theta = np.pi / 4\n",
"R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])\n",
"x, y = np.dot(R, np.array([x, y])) + 1.5\n",
"plot(x, y, 'o-', color=color(4))\n",
"\n",
"# Fitting a parabola\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 2))\n",
"py = np.poly1d(np.polyfit(t, y, 2))\n",
"plot(px(u), py(u), color=color(5))\n",
"\n",
"# Error of the parabola fitting\n",
"print \"E2 =\", sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"for t in range(len(x)):\n",
" t_closest = np.argmin(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2))\n",
" plot([x[t], px(u[t_closest])], [y[t], py(u[t_closest])], 'r', lw=1)\n",
"\n",
"\n",
"# Fitting a line\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 1))\n",
"py = np.poly1d(np.polyfit(t, y, 1))\n",
"plot(px(u), py(u), '--', color=color(5))\n",
"\n",
"# Error of the line fitting\n",
"print \"E1 =\", sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"for t in range(len(x)):\n",
" t_closest = np.argmin(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2))\n",
" plot([x[t], px(u[t_closest])], [y[t], py(u[t_closest])], 'r--', lw=1)\n",
"\n",
"\n",
"axis('equal')\n",
"show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Refining the linspace of u"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"E parabola = 4.34278175036\n",
"E line = 5.49045936883\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10a5a7ad0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure(figsize=(8, 8))\n",
"\n",
"# 5 points in V shape\n",
"x = [1, 1.7, 1, 4.5, 2]\n",
"y = [-1, -1, 0.5, 2, -2]\n",
"n = len(x)\n",
"plot(x, y, 'o-', color=color(0))\n",
"\n",
"# u should be np.linspace(0, n-1, 100) as [px(0), py(0)] should be close to (x[0], y[0])\n",
"# and (px(n-1), py(n-1)) should be close to (x[n-1], y[n-1]). But sometimes, we need\n",
"# to extend a bit more the (px, py) curve to find the closest point to (x[0], y[0])\n",
"# or (x[n-1], y[n-1]). Adding 10 units on both sides should be enough:\n",
"u = np.linspace(-10, n+10, 1000)\n",
"\n",
"\n",
"# Fitting a parabola\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 2))\n",
"py = np.poly1d(np.polyfit(t, y, 2))\n",
"\n",
"plot(px(u), py(u), color=color(1))\n",
"\n",
"# Error of the parabola fitting\n",
"print \"E parabola =\", sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"for t in range(len(x)):\n",
" t_closest = np.argmin(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2))\n",
" plot([x[t], px(u[t_closest])], [y[t], py(u[t_closest])], 'r', lw=1)\n",
"\n",
" \n",
"# Fitting a line\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 1))\n",
"py = np.poly1d(np.polyfit(t, y, 1))\n",
"\n",
"plot(px(u), py(u), '--', color=color(1))\n",
"\n",
"# Error of the line fitting\n",
"print \"E line =\", sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"for t in range(len(x)):\n",
" t_closest = np.argmin(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2))\n",
" plot([x[t], px(u[t_closest])], [y[t], py(u[t_closest])], 'r--', lw=1)\n",
"\n",
" \n",
"axis('equal')\n",
"xlim(min(x)-1, max(x)+1)\n",
"ylim(min(y)-1, max(y)+1)\n",
"show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Performance measurement\n",
"\n",
"The same code without the plot gives ~1ms to do the 2 fitting and compute the 2 errors"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1000 loops, best of 3: 1.04 ms per loop\n"
]
}
],
"source": [
"%%timeit\n",
"x = [1, 1.7, 1, 4.5, 2]\n",
"y = [-1, -1, 0.5, 2, -2]\n",
"n = len(x)\n",
"\n",
"u = np.linspace(-10, n+10, 1000)\n",
"\n",
"# Fitting a parabola\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 2))\n",
"py = np.poly1d(np.polyfit(t, y, 2))\n",
"\n",
"# Error of the parabola fitting\n",
"sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])\n",
"\n",
"\n",
"# Fitting a line\n",
"t = range(len(x))\n",
"px = np.poly1d(np.polyfit(t, x, 1))\n",
"py = np.poly1d(np.polyfit(t, y, 1))\n",
"\n",
"# Error of the line fitting\n",
"sum([np.min(np.sqrt((x[t]-px(u)) ** 2 + (y[t]-py(u)) ** 2)) for t in range(len(x))])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment