Skip to content

Commit 11a4600

Browse files
committed
a convolution example
1 parent 7d3d7d5 commit 11a4600

File tree

6 files changed

+2101
-0
lines changed

6 files changed

+2101
-0
lines changed

examples/scipy/FFT/cleaned.png

26.7 KB
Loading

examples/scipy/FFT/convolve.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import numpy as np
2+
import matplotlib.pyplot as plt
3+
from scipy import signal
4+
5+
def main():
6+
7+
data = np.loadtxt("signal.txt")
8+
9+
x = data[:,0]
10+
sig = data[:,2]
11+
orig = data[:,1]
12+
13+
N = len(x)
14+
15+
window = signal.gaussian(N, 20.0)
16+
window /= np.sum(window)
17+
clean = signal.convolve(sig, window, mode="same")
18+
19+
plt.plot(x, clean)
20+
plt.plot(x, orig)
21+
plt.savefig("cleaned.png")
22+
23+
24+
25+
if __name__ == "__main__":
26+
main()

examples/scipy/FFT/gaussian.png

56.2 KB
Loading

examples/scipy/FFT/make_signal.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import numpy as np
2+
import matplotlib.pyplot as plt
3+
4+
# make a signal that we will convolve
5+
6+
def f(x, L):
7+
A = L/10.0
8+
return 2*np.sin(2*np.pi*x/L) + x*(L-x)**2/L**3 * np.cos(x) + 5*x*(L-x)/L**2 + A/2 + 0.1*A*np.sin(13*np.pi*x/L)
9+
10+
11+
N = 2048
12+
L = 50.0
13+
14+
x = np.linspace(0, L, N, endpoint=False)
15+
f = f(x, L)
16+
fnew = f + 0.5*np.random.randn(N)
17+
18+
with open("signal.txt", "w") as fo:
19+
for n in range(N):
20+
fo.write("{:20} {:20} {:20}\n".format(x[n], f[n], fnew[n]))
21+
22+
plt.plot(x, f)
23+
plt.plot(x, fnew, zorder=-100)
24+
25+
26+
27+
plt.savefig("test.png")

0 commit comments

Comments
 (0)