Skip to content

Instantly share code, notes, and snippets.

@andrewgiessel
Last active June 30, 2023 20:31
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save andrewgiessel/4635563 to your computer and use it in GitHub Desktop.
Save andrewgiessel/4635563 to your computer and use it in GitHub Desktop.
simple numpy based 2d gaussian function
import numpy as np
def makeGaussian(size, fwhm = 3, center=None):
""" Make a square gaussian kernel.
size is the length of a side of the square
fwhm is full-width-half-maximum, which
can be thought of as an effective radius.
"""
x = np.arange(0, size, 1, float)
y = x[:,np.newaxis]
if center is None:
x0 = y0 = size // 2
else:
x0 = center[0]
y0 = center[1]
return np.exp(-4*np.log(2) * ((x-x0)**2 + (y-y0)**2) / fwhm**2)
@stablegradients
Copy link

this is not a standard gaussian function as you do not take into account when off diagonal elms are non zero

@cfgnunes
Copy link

cfgnunes commented Apr 5, 2019

I think that the return must be:

return np.exp(-((x-x0)**2 + (y-y0)**2) / fwhm**2)

without the part: "4*np.log(2)"

According the equation. See: https://en.wikipedia.org/wiki/Gaussian_function

@suvojit-0x55aa
Copy link

Does this formula reflect the 2D gaussian here

How can this code be modified to make the gaussian asymmetric?

Try this gist

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