码迷,mamicode.com
首页 > 编程语言 > 详细

利用python和jupyter notebook交互式小部件生成方波,可以实时调节谐波个数和基波频率

时间:2020-07-07 09:27:19      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:active   des   功能   ipython   mamicode   oat   pyplot   loading   tle   

最近在试着使用jupyter waget来实现一些滑块的功能。

这里是用python创造一个方波。方波本质就是一个不同次谐波的正弦函数的叠加,因此代码很简单:

import ipywidgets as widgets
from IPython.display import display
import matplotlib.pyplot as plt
import numpy as np

%matplotlib nbagg

fig, ax = plt.subplots(1, figsize=(10, 4))
plt.suptitle(square)

def plot_exp(f_max, num):
    ax.clear()
    T = 1/f_max
    t=np.linspace(-2, 2, 2000) #0到6T区间内2000个样本
    x = np.zeros_like(t)
    f = f_max
    k=np.arange(1,num) 
    k = 2 * k -1 
    for i in range(2000):
        x[i]= np.sum(np.sin(k*np.pi*f*t[i])/k)
    y = np.real(x)
    ax.plot(t, y)
    plt.show()

f_max = widgets.FloatSlider(min=0, max=1, value=1, description=f:) #f_max是正弦波基波频率
num = widgets.IntSlider(min=1, max=100, value=1, description=num:)#num是要叠加的谐波次数
    
widgets.interactive(plot_exp, f_max=f_max,num=num)#设置滑块插件

最后的结果效果不错

技术图片

利用python和jupyter notebook交互式小部件生成方波,可以实时调节谐波个数和基波频率

标签:active   des   功能   ipython   mamicode   oat   pyplot   loading   tle   

原文地址:https://www.cnblogs.com/datkartoffel/p/13258684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!