[Jupyter Notebook] 「入力テキスト→波形生成」

テキスト(周波数)を入力すると、その場で波形を描画する

%pip install matplotlib numpy ipywidgets
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, FloatSlider

# 波形を描画する関数
def plot_wave(freq, amplitude):
    # データの生成
    t = np.linspace(0, 1, 1000)  # 0秒から1秒までを1000分割
    y = amplitude * np.sin(2 * np.pi * freq * t) # 正弦波の計算公式
    
    # グラフの設定
    plt.figure(figsize=(10, 4))
    plt.plot(t, y, color='blue')
    plt.title(f"Sine Wave: {freq} Hz")
    plt.xlabel("Time [s]")
    plt.ylabel("Amplitude")
    plt.grid(True)
    plt.ylim(-5, 5) # y軸の範囲を固定
    plt.show()

# インタラクティブなUIの作成
interact(plot_wave, 
         freq=FloatSlider(value=2.0, min=1.0, max=20.0, step=0.5, description='周波数(Hz):'),
         amplitude=FloatSlider(value=1.0, min=0.1, max=5.0, step=0.1, description='振幅:'))