

This example is taken from a tutorial related to convolution integral. I would like to export this example as animation in mp4 format. So far, the code looks like this : import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def showConvolution(t0,f1, f2):
# Calculate the overall convolution result using Simpson integration
convolution = np.zeros(len(t))
for n, t_ in enumerate(t):
prod = lambda tau: f1(tau) * f2(t_tau)
convolution[n] = scipy.integrate.simps(prod(t), t)
# Create the shifted and flipped function
f_shift = lambda t: f2(t0t)
prod = lambda tau: f1(tau) * f2(t0tau)
# Plot the curves
plt.gcf().clear() # il
plt.subplot(211)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, f1(t), label=r'$f_1(\tau)$')
plt.plot(t, f_shift(t), label=r'$f_2(t_0\tau)$')
plt.fill(t, prod(t), color='r', alpha=0.5, edgecolor='black', hatch='//') # il
plt.plot(t, prod(t), 'r', label=r'$f_1(\tau)f_2(t_0\tau)$')
plt.grid(True); plt.xlabel(r'$\tau$'); plt.ylabel(r'$x(\tau)$') # il
plt.legend(fontsize=10) # il
plt.text(4, 0.6, '$t_0=%.2f$' % t0, bbox=dict(fc='white')) # il
# plot the convolution curve
plt.subplot(212)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, convolution, label='$(f_1*f_2)(t)$')
# recalculate the value of the convolution integral at the current timeshift t0
current_value = scipy.integrate.simps(prod(t), t)
plt.plot(t0, current_value, 'ro') # plot the point
plt.grid(True); plt.xlabel('$t$'); plt.ylabel('$(f_1*f_2)(t)$') # il
plt.legend(fontsize=10) # il
plt.show() # il
Fs = 50 # our sampling frequency for the plotting
T = 5 # the time range we are interested in
t = np.arange(T, T, 1/Fs) # the time samples
f1 = lambda t: np.maximum(0, 1abs(t))
f2 = lambda t: (t>0) * np.exp(2*t)
t0 = np.arange(2.0,2.0, 0.05)
fig = plt.figure(figsize=(8,3))
anim = animation.FuncAnimation(fig, showConvolution, frames=t0, fargs=(f1,f2),interval=80)
anim.save('animation.mp4', fps=30) # fps = frames per second
plt.show()
When I run the program I see the output of see the output of convolution integral at t0 = 0.20.
Is there a way to change t0 so that I'd like to able to save it as animation as in the tutorial In the example t0 decreases from 2.0 to 1.95 etc the green curve is shifted right, and the area between curves, product increases. In the tutorial there is an html animation and I would like to save as mp4 file.
I've also added source code as an attachment.
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


Erdem,
I do not understand your question. If I run that code I do get an mp4 file of the animation.
Tom
This example is taken from a tutorial related to convolution integral. I would like to export this example as animation in mp4 format. So far, the code looks like this : import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def showConvolution(t0,f1, f2):
# Calculate the overall convolution result using Simpson integration
convolution = np.zeros(len(t))
for n, t_ in enumerate(t):
prod = lambda tau: f1(tau) * f2(t_tau)
convolution[n] = scipy.integrate.simps(prod(t), t)
# Create the shifted and flipped function
f_shift = lambda t: f2(t0t)
prod = lambda tau: f1(tau) * f2(t0tau)
# Plot the curves
plt.gcf().clear() # il
plt.subplot(211)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, f1(t), label=r'$f_1(\tau)$')
plt.plot(t, f_shift(t), label=r'$f_2(t_0\tau)$')
plt.fill(t, prod(t), color='r', alpha=0.5, edgecolor='black', hatch='//') # il
plt.plot(t, prod(t), 'r', label=r'$f_1(\tau)f_2(t_0\tau)$')
plt.grid(True); plt.xlabel(r'$\tau$'); plt.ylabel(r'$x(\tau)$') # il
plt.legend(fontsize=10) # il
plt.text(4, 0.6, '$t_0=%.2f$' % t0, bbox=dict(fc='white')) # il
# plot the convolution curve
plt.subplot(212)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, convolution, label='$(f_1*f_2)(t)$')
# recalculate the value of the convolution integral at the current timeshift t0
current_value = scipy.integrate.simps(prod(t), t)
plt.plot(t0, current_value, 'ro') # plot the point
plt.grid(True); plt.xlabel('$t$'); plt.ylabel('$(f_1*f_2)(t)$') # il
plt.legend(fontsize=10) # il
plt.show() # il
Fs = 50 # our sampling frequency for the plotting
T = 5 # the time range we are interested in
t = np.arange(T, T, 1/Fs) # the time samples
f1 = lambda t: np.maximum(0, 1abs(t))
f2 = lambda t: (t>0) * np.exp(2*t)
t0 = np.arange(2.0,2.0, 0.05)
fig = plt.figure(figsize=(8,3))
anim = animation.FuncAnimation(fig, showConvolution, frames=t0, fargs=(f1,f2),interval=80)
anim.save('animation.mp4', fps=30) # fps = frames per second
plt.show()
When I run the program I see the output of see the output of convolution integral at t0 = 0.20.
Is there a way to change t0 so that I'd like to able to save it as animation as in the tutorial In the example t0 decreases from 2.0 to 1.95 etc the green curve is shifted right, and the area between curves, product increases. In the tutorial there is an html animation and I would like to save as mp4 file.
I've also added source code as an attachment.
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers

_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


Please don't drop the mailing list from the replies.
Ah, I ran it by invoking the script in an IPython session where `plt.ion()` has been called and `plt.show()` in nonblocking. If I run it as as script I see what you descirbe!
Removing the `plt.show()` calls from inside of the redraw function allows it to run endtoend and write out the animation.
Tom Thank you very much.
My operating system is Ubuntu 18.04 LTS 64 bit. I've set up a virtual python environment and to activate I use this command.
$ . venv/bin/activate
I've saved source file as convolution py. To run the source code I use this command
$ python convolution.py
But rather than an animation I see only a plot of integral at t0=2.00
I wait some time and nothing happens. I've also tried to close window a few times and the result is same.
Since you may be able to get an mp4 file of the animation may it be because of some codecs are missing or may be a bug?
Erdem Thomas Caswell < [hidden email]>, 20 May 2019 Pzt, 00:17 tarihinde şunu yazdı: Erdem,
I do not understand your question. If I run that code I do get an mp4 file of the animation.
Tom
This example is taken from a tutorial related to convolution integral. I would like to export this example as animation in mp4 format. So far, the code looks like this : import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def showConvolution(t0,f1, f2):
# Calculate the overall convolution result using Simpson integration
convolution = np.zeros(len(t))
for n, t_ in enumerate(t):
prod = lambda tau: f1(tau) * f2(t_tau)
convolution[n] = scipy.integrate.simps(prod(t), t)
# Create the shifted and flipped function
f_shift = lambda t: f2(t0t)
prod = lambda tau: f1(tau) * f2(t0tau)
# Plot the curves
plt.gcf().clear() # il
plt.subplot(211)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, f1(t), label=r'$f_1(\tau)$')
plt.plot(t, f_shift(t), label=r'$f_2(t_0\tau)$')
plt.fill(t, prod(t), color='r', alpha=0.5, edgecolor='black', hatch='//') # il
plt.plot(t, prod(t), 'r', label=r'$f_1(\tau)f_2(t_0\tau)$')
plt.grid(True); plt.xlabel(r'$\tau$'); plt.ylabel(r'$x(\tau)$') # il
plt.legend(fontsize=10) # il
plt.text(4, 0.6, '$t_0=%.2f$' % t0, bbox=dict(fc='white')) # il
# plot the convolution curve
plt.subplot(212)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, convolution, label='$(f_1*f_2)(t)$')
# recalculate the value of the convolution integral at the current timeshift t0
current_value = scipy.integrate.simps(prod(t), t)
plt.plot(t0, current_value, 'ro') # plot the point
plt.grid(True); plt.xlabel('$t$'); plt.ylabel('$(f_1*f_2)(t)$') # il
plt.legend(fontsize=10) # il
plt.show() # il
Fs = 50 # our sampling frequency for the plotting
T = 5 # the time range we are interested in
t = np.arange(T, T, 1/Fs) # the time samples
f1 = lambda t: np.maximum(0, 1abs(t))
f2 = lambda t: (t>0) * np.exp(2*t)
t0 = np.arange(2.0,2.0, 0.05)
fig = plt.figure(figsize=(8,3))
anim = animation.FuncAnimation(fig, showConvolution, frames=t0, fargs=(f1,f2),interval=80)
anim.save('animation.mp4', fps=30) # fps = frames per second
plt.show()
When I run the program I see the output of see the output of convolution integral at t0 = 0.20.
Is there a way to change t0 so that I'd like to able to save it as animation as in the tutorial In the example t0 decreases from 2.0 to 1.95 etc the green curve is shifted right, and the area between curves, product increases. In the tutorial there is an html animation and I would like to save as mp4 file.
I've also added source code as an attachment.
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


Try 'replyall' instead?
Yes, that is controlled by the fps kwarg to `anim.save`.
Glad it is working!
Tom My reply does not show in the mail list. I have no idea why this happened but I simply use Gmail to reply. I used to use Gnus message reader with Emacs but I think it is not installed for now.
Thanks now it works as expected!
Is there a way to slow down animation a bit.
Erdem
Thomas Caswell < [hidden email]>, 20 May 2019 Pzt, 01:05 tarihinde şunu yazdı: Please don't drop the mailing list from the replies.
Ah, I ran it by invoking the script in an IPython session where `plt.ion()` has been called and `plt.show()` in nonblocking. If I run it as as script I see what you descirbe!
Removing the `plt.show()` calls from inside of the redraw function allows it to run endtoend and write out the animation.
Tom
Thank you very much.
My operating system is Ubuntu 18.04 LTS 64 bit. I've set up a virtual python environment and to activate I use this command.
$ . venv/bin/activate
I've saved source file as convolution py. To run the source code I use this command
$ python convolution.py
But rather than an animation I see only a plot of integral at t0=2.00
I wait some time and nothing happens. I've also tried to close window a few times and the result is same.
Since you may be able to get an mp4 file of the animation may it be because of some codecs are missing or may be a bug?
Erdem Thomas Caswell < [hidden email]>, 20 May 2019 Pzt, 00:17 tarihinde şunu yazdı: Erdem,
I do not understand your question. If I run that code I do get an mp4 file of the animation.
Tom
This example is taken from a tutorial related to convolution integral. I would like to export this example as animation in mp4 format. So far, the code looks like this : import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def showConvolution(t0,f1, f2):
# Calculate the overall convolution result using Simpson integration
convolution = np.zeros(len(t))
for n, t_ in enumerate(t):
prod = lambda tau: f1(tau) * f2(t_tau)
convolution[n] = scipy.integrate.simps(prod(t), t)
# Create the shifted and flipped function
f_shift = lambda t: f2(t0t)
prod = lambda tau: f1(tau) * f2(t0tau)
# Plot the curves
plt.gcf().clear() # il
plt.subplot(211)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, f1(t), label=r'$f_1(\tau)$')
plt.plot(t, f_shift(t), label=r'$f_2(t_0\tau)$')
plt.fill(t, prod(t), color='r', alpha=0.5, edgecolor='black', hatch='//') # il
plt.plot(t, prod(t), 'r', label=r'$f_1(\tau)f_2(t_0\tau)$')
plt.grid(True); plt.xlabel(r'$\tau$'); plt.ylabel(r'$x(\tau)$') # il
plt.legend(fontsize=10) # il
plt.text(4, 0.6, '$t_0=%.2f$' % t0, bbox=dict(fc='white')) # il
# plot the convolution curve
plt.subplot(212)
plt.gca().set_ymargin(0.05) # il
plt.plot(t, convolution, label='$(f_1*f_2)(t)$')
# recalculate the value of the convolution integral at the current timeshift t0
current_value = scipy.integrate.simps(prod(t), t)
plt.plot(t0, current_value, 'ro') # plot the point
plt.grid(True); plt.xlabel('$t$'); plt.ylabel('$(f_1*f_2)(t)$') # il
plt.legend(fontsize=10) # il
plt.show() # il
Fs = 50 # our sampling frequency for the plotting
T = 5 # the time range we are interested in
t = np.arange(T, T, 1/Fs) # the time samples
f1 = lambda t: np.maximum(0, 1abs(t))
f2 = lambda t: (t>0) * np.exp(2*t)
t0 = np.arange(2.0,2.0, 0.05)
fig = plt.figure(figsize=(8,3))
anim = animation.FuncAnimation(fig, showConvolution, frames=t0, fargs=(f1,f2),interval=80)
anim.save('animation.mp4', fps=30) # fps = frames per second
plt.show()
When I run the program I see the output of see the output of convolution integral at t0 = 0.20.
Is there a way to change t0 so that I'd like to able to save it as animation as in the tutorial In the example t0 decreases from 2.0 to 1.95 etc the green curve is shifted right, and the area between curves, product increases. In the tutorial there is an html animation and I would like to save as mp4 file.
I've also added source code as an attachment.
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers



_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers

