Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Calculating WIFI propagation with IJulia
{
"metadata": {
"language": "Julia",
"name": "WIFI simulation"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": "Where's my WIFI signal ?"
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "Solving the Helmhotz equation to find the good spots in your home"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The great blog article http://jasmcole.com/2014/08/25/helmhurts/ explains how to apply the Maxwell equations, and in particular their smaller sibling the Helmholtz equations, to calculate the propagation of WIFI signals."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "What follows is an attempt to use Julia to go through the whole process described in the blog entry. \n\nThe only packages necessary are ``Images``, ``ImageView`` and ``Color`` that will allow us to import the floor plan at the start and produce the amplitude of the signal field at the end. All the other functions used (including the sparse matrix operations) are already provided by the base library of Julia"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Setting the up the data"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We'll start first by importing a floor plan, in that case 320x224 bitmap image that I produced with an image editor, but you can of course create your own image of your own place (or an imaginary one)."
},
{
"cell_type": "code",
"collapsed": false,
"input": "using Color\nusing Images\nusing ImageView",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": "img = imread(\"/home/fred/Images/plan.png\")",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAWgAAADgCAAAAAALGqMIAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAAsSAAALEgHS3X78AAAFDUlEQVR42u2dPXLbSBhEfZOt2lyZr+AqB442YIyQoTMdQIkuoAQxc6UIETHmAVg4B7Pd5Y8FgCJpGpxpdH3zHkWYv7DQ1fUwgAjwyxcAAAAAAAAAAPgN35fLqlpW/eTw73J073j37HWH+2evufjOP5p/NfjVXrtu223/pzteh7f7R7rTja473T5/fTd4zeXXb9vr+by2Tds07fl0ePn8bD/9+jGj9l8vBsu4kv2n3fWgH8znG0EP2V4Punlszt8JeghBi7gR9IP5EPSIfEHj6BE3VoZR1bGj0SJotAi3RhN0SlCHiHxbhjR6RD510OgRbLCIYNQhokB1zLPBwspQBI4WwQaLiALVYbdTiUanJN/wznbUYefoqOqIFrRto3G0CregUUdKWBmKKFAddo5GHSnhs3ciClSHXdCoIyUFNtpux/+DQa/qVV3X++lWtjT34dZosyKmg6BFBFOHLzRahFvQURsdbRPcFxwtgkaLcAuaRqck3947X2i0CBotgkaLcAs6aqPtNlhodEoKbLTdypBGpwR1iEAdIhhHi0AdIgpUB+NoFW6OJuiUFKgOghYR7SNhvtBoEW5BP9jodn/S3cOlky3NfQRTB5/4H1HgB9HtNlg4hiUlnFNJxI1GP7/vWd2c3uCJoO8MOhkELQp6+ZqWKcPFtn/7S8Kgd6frtee0Qadm99vl/0x9eVY/myHru2bVNVOo/2wZLUgY9JjX+4Kee/llTFHH6p4ZE/SYKUHT6AlMUQeNngCNFkHQIlCHCBotImLQ667/8sOu/4LEi7c/vjbx8nNdd2Feh8dPX7B4+qrF441m9Gs8LY5Uh+kUdbwveqq/+zn/1T+6WNT3Bb2Yxj+LxfWgpyxTEtYTqnY3g70dlXSpvl4NerY/921Gv8Zb2pkPgl5Kl8owaFWjiw96IwraRR0mjk6sjme/oE0ajaOzgaNFqBrtoo7wjqbRhY06TBwdXx00OimGjt4+P7/sOU4TfyYeR4swbHT4oF0aPZs6ssImuAjDRocPmkbnxLDRODoppQWNOkQYqoOgk1Ja0DhaBI0WwcpQhGHQ4dVB0Dlhf7QIw0aHD9ql0THVYdjomEHjaBE0WoSho2l0UkoLmp1KIgzVQdBJKU0dOFoE42gRho0O72iXoGl0UkoL2tDRqCMpBQft0ujw6nBpdMygDRsdXh3FN3p7OB7r15FZiY/KMmy0yQGdiY8zNHS0ybHg8Q/oNDlylvN1ZIPzdYjI2mgc3aM6uwGNZmWogfN1iCit0TEdbbg/2qTRqCMbjKNFlNbo2RydNWgc3cOoQ4RKHcU3OuvKcLterzeb9WY/lS7VU2FBz4Zho7OqYzYMHZ11y3A2DNWRddQxG6hDBOoQ8eQXNOoQEbPRBC0CdYhgZSjCUB0xh3dssIgwbDTqEBEzaEYdIhh1iDBUR8xGG446Sms0jk6KYdAxG22ojtIabeJogs7GuNHx1WHiaBqdjZiNJmgRqEME42gRqEOE4QZLaeqg0UkxdHTMoFGHCEN1MOoQUZo6TMbRqCMbMRttGHRMRxuOOsaNjq8OE0dHabShOrI2+m1ZVcvj9UW6VIbq4JxKIrI22vCg+5j7OmY7waC9OuKfryOmOgzPQBNzeDdbo6+r471p2v1Pe5yeX4bPXZvees/1970VtjI0IUqj7YNerOpLl3o//bhxfOjXz+p07/P9Vf3jrqCnaHN34327W+oAAAAAAAAAgAz8B4feRMzF+qFZAAAAAElFTkSuQmCC",
"prompt_number": 3,
"text": "ARGB Image with:\n data: 4x360x224 Array{Uint8,3}\n properties:\n colorspace: ARGB\n colordim: 1\n spatialorder: x y\n limits: (0x00,0xff)"
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": "size(img)",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": "(4,360,224)"
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Here we have an image structure containing an array of three dimensions, 2 spatial dimension and 1 color dimension of size 4 for each of the 3 colors (Red, Green and Blue) plus an alpha channel. This is a color model akso known as RGBA.\nFor the purpose of the simulation we only need to know if a given point is air or concrete.\n\nLet's extract that material information from one of the color planes : "
},
{
"cell_type": "code",
"collapsed": false,
"input": "plan = squeeze(img.data[2,:,:],1);",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": "And set the necessary variables :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "dimx, dimy = size(plan) # spatial dimensions\nfsize = length(plan) # full size of the problem\n\u03b4 = 0.03 # spatial resolution of each pixel",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": "0.03"
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Note that the spatial resolution is given by the actual size of the appartment divided by the number of pixel making the plan picture. Two important considerations come into play here :\n1. Beware of not making the problem size (the number of pixels) too important, I found on my setup that you can go quickly from a problem that can be solved in seconds (100 x 100) to a never ending calculation or one that throws out of memory exceptions (1000 x 1000 in my case).\n2. You can't on the other hand keep the pixel count low by increasing the spatial step \u03b4 (i.e. decreasing the resolution) : when it gets too close to the wavelength (about 10 cm for WIFI signals) the mesh becomes too coarse to give meaningful results.\n\nHere, with a spatial resolution of 3 cm we should be safe for the resolution while still simulating a normally sized appartment of about 10m x 6m"
},
{
"cell_type": "code",
"collapsed": false,
"input": "\u03b7_air = 1. # refraction index for air\n\u03b7_concrete = 2.55 - 0.01im # refraction index for concrete\n# the imaginary part conveys the absorption\n\n\u03bb = 0.12 # for a 2.5 GHz signal, wavelength is ~ 12cm\nk = 2\u03c0 / \u03bb # k is the wavenumber",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"text": "52.35987755982989"
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We'll now create the Complex Array containing the material information :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "\u03bc = similar(plan, Complex)\n\u03bc[plan .!= 0] = (k / \u03b7_air)^2\n\u03bc[plan .== 0] = (k / \u03b7_concrete)^2;",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Note that we directly calculate the $\\left( \\frac{k}{n} \\right) ^2$ value appearing in the Helmholtz equation below."
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Solving the equation"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The Helmholtz equation for the amplitude of the electric field is : $$\\Delta A + \\left( \\frac{k}{n} \\right) ^2 A= f$$ $\\Delta$ being the Laplacian operator, $A$ the amplitude field and $f$ the wave source that will be equal to zero everywhere except where the antenna is."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The first step is to rephrase that problem in one of the ways (there are several) a computer can tackle it : by discretizing the space and using finite differences. \n\nIn that framework the Laplacian can be approximated by the neighboring values, giving us :\n$$\\frac{A(x+\u03b4,y) - 2 A(x,y) + A(x-\u03b4,y)}{\u03b4^2}+\\frac{A(x,y+\u03b4) - 2 A(x,y) + A(x,y-\u03b4)}{\u03b4^2}+ \\left( \\frac{k}{n} \\right) ^2 A(x,y) = f(x,y)$$"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We have here a linear combination of elements of A equal to elements of f. In others words an ordinary system of linear equations that computers are good at solving. \n\nThere is however a roadblock : that system has as many equations as there are values in A : 360 x 224 = 80.640. The matrix describing the problem would occupy an huge amount of memory if stored as a dense array : 80.640 x 80.640 x 8 x 2 (don't forget these are complex numbers) = 96 Terabytes !\n\nThis memory would be mostly wasted though as the matrix is almost empty (only 5 elements appear in each equation not the whole 80.640). Sparses matrices are the adapted structure in these situations as they only store the non zero elements in memory. Julia provides a sparse matrix type on which most dense matrix methods can apply."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Let's now build the three vectors describing the non zero elements of the sparse matrix ``S`` (the ``sub2ind()`` function relates the (x,y) positions in the real space to an index in the matrix):"
},
{
"cell_type": "code",
"collapsed": false,
"input": "xs = Array(Int, 5*dimx*dimy)\nys = Array(Int, 5*dimx*dimy)\nvs = Array(Complex, 5*dimx*dimy)\ni = 1\nfor x in 1:dimx, y in 1:dimy # x=1; y=1\n xm = (x+dimx-2) % dimx + 1\n xp = x % dimx + 1\n ym = (y+dimy-2) % dimy + 1\n yp = y % dimy + 1\n\n xs[i] = sub2ind((dimx,dimy), x, y); ys[i] = sub2ind((dimx,dimy), x, y); vs[i] = \u03bc[x,y] - 2*\u03b4^-2\n i += 1\n xs[i] = sub2ind((dimx,dimy), x, y); ys[i] = sub2ind((dimx,dimy), xp, y); vs[i] = \u03b4^-2\n i += 1\n xs[i] = sub2ind((dimx,dimy), x, y); ys[i] = sub2ind((dimx,dimy), xm, y); vs[i] = \u03b4^-2\n i += 1\n xs[i] = sub2ind((dimx,dimy), x, y); ys[i] = sub2ind((dimx,dimy), x, yp); vs[i] = \u03b4^-2\n i += 1\n xs[i] = sub2ind((dimx,dimy), x, y); ys[i] = sub2ind((dimx,dimy), x, ym); vs[i] = \u03b4^-2\n i += 1\nend",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can now declare ``S`` by calling the ``sparse()`` function :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "S = sparse(xs, ys, vs, fsize, fsize);",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There is only the emiter field $f$ left to define :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "f = fill(0. + 0.im, (dimx, dimy))\nf[80:82, 160:162] = 1.0; # our Wifi emitter antenna will be there;",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Now, with the above notations, we have the linear system $S.A=f$ to solve for A :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "A = reshape(S \\ vec(f), dimx, dimy);",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": "A contains the amplitude field we are looking for in the real part of the complex number. Since the relevant physical value is rather the Energy received not the amplitude, we'll calculate the square of the amplitude."
},
{
"cell_type": "code",
"collapsed": false,
"input": "E = real(A) .* real(A);",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": "And since the receiving antennas of laptops and smartphones have a size of at least 10cm, we'll convolve the energy field to have a more accurate representation of the received signal strength"
},
{
"cell_type": "code",
"collapsed": false,
"input": "E = conv2(E, ones(5,5)/25 )[3:end-2, 3:end-2];",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Plotting the result"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can now convert the E field back to an image to visualize where the good spots are for WIFI reception in our appartment.\n\nFirst we'll translate the energy field to 1-100 interger scale :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "Ei = iround(min(100, max(1, (int( 1 .+ 100 .* (E .- minimum(E)) / (maximum(E) - minimum(E)) ) ))));",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Then we'll create a color scale using the ``colormap()`` function of the ``Color`` package :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "cm = reverse(colormap(\"oranges\"));",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": "And set the walls to the darkest color : "
},
{
"cell_type": "code",
"collapsed": false,
"input": "Ei[plan .== 0] = 1;",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The last step is to create a color image by picking the RGB components of the color scale :"
},
{
"cell_type": "code",
"collapsed": false,
"input": "field = Array(Float64, (dimx, dimy, 3))\nfield[:,:,1] = [ cm[Ei[i]].r for i in 1:fsize ]\nfield[:,:,2] = [ cm[Ei[i]].g for i in 1:fsize ]\nfield[:,:,3] = [ cm[Ei[i]].b for i in 1:fsize ]\nfim = colorim(permutedims(field, [2, 1, 3]))",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "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",
"prompt_number": 30,
"text": "RGB Image with:\n data: 224x360x3 Array{Float64,3}\n properties:\n colorspace: RGB\n colordim: 3\n spatialorder: y x"
}
],
"prompt_number": 30
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "et voil\u00e0 !"
}
],
"metadata": {}
}
]
}
@qmnonic
Copy link

qmnonic commented May 3, 2015

Tried running through the example from your blog, using julia instead of ijulia, and it behaved differently (and failed). The imread doesn't return 3 columns, rather 2 (360,224).. so no colour depth column. Falls apart after that. Am I missing something?

julia v 0.3.8

Matt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment