import%20marimo%0A%0A__generated_with%20%3D%20%220.23.9%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%8E%AF%20%E3%81%AA%E3%81%9C%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B%0A%0A%20%20%20%20%23%23%23%20Wandas%E3%81%AE%E6%A8%99%E6%BA%96%E6%A9%9F%E8%83%BD%E3%81%A0%E3%81%91%E3%81%A7%E3%81%AF%E8%B6%B3%E3%82%8A%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%0A%0A%20%20%20%20Wandas%E3%81%AB%E3%81%AF%E8%B1%8A%E5%AF%8C%E3%81%AA%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E6%A9%9F%E8%83%BD%E3%81%8C%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%0A%20%20%20%20%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A7%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%83%8B%E3%83%BC%E3%82%BA%E3%81%8C%E7%94%9F%E3%81%98%E3%81%BE%E3%81%99%EF%BC%9A%0A%0A%20%20%20%201.%20**%E7%8B%AC%E8%87%AA%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%83%A0**%3A%20%E7%A0%94%E7%A9%B6%E9%96%8B%E7%99%BA%E3%82%84%E7%89%B9%E6%AE%8A%E3%81%AA%E5%88%86%E6%9E%90%E6%89%8B%E6%B3%95%0A%20%20%20%202.%20**%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%9B%BA%E6%9C%89%E3%81%AE%E5%87%A6%E7%90%86**%3A%20%E6%A5%AD%E7%95%8C%E7%89%B9%E6%9C%89%E3%81%AE%E8%A8%88%E7%AE%97%E3%82%84%E5%A4%89%E6%8F%9B%0A%20%20%20%203.%20**%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0**%3A%20%E6%96%B0%E3%81%97%E3%81%84%E5%87%A6%E7%90%86%E3%82%92%E8%A9%A6%E3%81%99%E5%89%8D%E6%AE%B5%E9%9A%8E%0A%20%20%20%204.%20**%E7%B5%B1%E5%90%88**%3A%20%E6%97%A2%E5%AD%98%E3%81%AENumPy%2FSciPy%E9%96%A2%E6%95%B0%E3%82%92%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80%0A%0A%20%20%20%20%23%23%23%20%60apply()%60%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E5%88%A9%E7%82%B9%0A%0A%20%20%20%20-%20**%E7%B5%B1%E4%B8%80%E3%81%95%E3%82%8C%E3%81%9F%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9**%3A%20%E6%A8%99%E6%BA%96%E6%A9%9F%E8%83%BD%E3%81%A8%E5%90%8C%E3%81%98%E3%82%88%E3%81%86%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B%0A%20%20%20%20-%20**%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E8%87%AA%E5%8B%95%E7%AE%A1%E7%90%86**%3A%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%82%84%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%E3%82%92%E4%BF%9D%E6%8C%81%0A%20%20%20%20-%20**%E9%81%85%E5%BB%B6%E8%A9%95%E4%BE%A1%E5%AF%BE%E5%BF%9C**%3A%20Dask%E3%81%AB%E3%82%88%E3%82%8B%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AA%E5%87%A6%E7%90%86%0A%20%20%20%20-%20**%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E5%8F%AF%E8%83%BD**%3A%20%E4%BB%96%E3%81%AE%E5%87%A6%E7%90%86%E3%81%A8%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%84%E3%81%99%E3%81%84%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%93%A6%20%E6%BA%96%E5%82%99%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20from%20scipy%20import%20signal%20as%20scipy_signal%0A%0A%20%20%20%20import%20wandas%20as%20wd%0A%0A%20%20%20%20%23%20%E3%83%97%E3%83%AD%E3%83%83%E3%83%88%E8%A8%AD%E5%AE%9A%0A%20%20%20%20%23%20'%25matplotlib%20inline'%20command%20supported%20automatically%20in%20marimo%0A%20%20%20%20plt.rcParams%5B%22figure.figsize%22%5D%20%3D%20(12%2C%206)%0A%0A%20%20%20%20print(f%22Wandas%3A%20%7Bwd.__version__%7D%22)%0A%20%20%20%20print(%22%E2%9C%85%20%E6%BA%96%E5%82%99%E5%AE%8C%E4%BA%86%22)%0A%20%20%20%20return%20np%2C%20plt%2C%20scipy_signal%2C%20wd%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20wd)%3A%0A%20%20%20%20%23%20%E3%83%87%E3%83%A2%E7%94%A8%E3%81%AE%E4%BF%A1%E5%8F%B7%E3%82%92%E4%BD%9C%E6%88%90%0A%20%20%20%20np.random.seed(42)%0A%20%20%20%20sampling_rate%20%3D%201000%20%20%23%201kHz%0A%20%20%20%20duration%20%3D%202.0%0A%20%20%20%20time%20%3D%20np.linspace(0%2C%20duration%2C%20int(duration%20*%20sampling_rate))%0A%0A%20%20%20%20%23%20%E8%A4%87%E6%95%B0%E3%81%AE%E5%91%A8%E6%B3%A2%E6%95%B0%E6%88%90%E5%88%86%E3%82%92%E6%8C%81%E3%81%A4%E4%BF%A1%E5%8F%B7%0A%20%20%20%20signal_data%20%3D%20(%0A%20%20%20%20%20%20%20%201.0%20*%20np.sin(2%20*%20np.pi%20*%2050%20*%20time)%20%20%23%2050Hz%0A%20%20%20%20%20%20%20%20%2B%200.7%20*%20np.sin(2%20*%20np.pi%20*%20120%20*%20time)%20%20%23%20120Hz%0A%20%20%20%20%20%20%20%20%2B%200.5%20*%20np.sin(2%20*%20np.pi%20*%20200%20*%20time)%20%20%23%20200Hz%0A%20%20%20%20%20%20%20%20%2B%200.1%20*%20np.random.randn(len(time))%20%20%23%20%E3%83%8E%E3%82%A4%E3%82%BA%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20ChannelFrame%E3%82%92%E4%BD%9C%E6%88%90%0A%20%20%20%20demo_signal%20%3D%20wd.from_numpy(data%3Dsignal_data.reshape(1%2C%20-1)%2C%20sampling_rate%3Dsampling_rate%2C%20ch_labels%3D%5B%22Demo%20Signal%22%5D)%0A%0A%20%20%20%20print(%22%E3%83%87%E3%83%A2%E4%BF%A1%E5%8F%B7%E4%BD%9C%E6%88%90%E5%AE%8C%E4%BA%86%3A%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%3A%20%7Bdemo_signal.sampling_rate%7D%20Hz%22)%0A%20%20%20%20print(f%22%20%20%E4%BF%A1%E5%8F%B7%E9%95%B7%3A%20%7Bdemo_signal.duration%3A.2f%7D%20%E7%A7%92%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E6%95%B0%3A%20%7Bdemo_signal.n_samples%7D%22)%0A%20%20%20%20return%20demo_signal%2C%20sampling_rate%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%94%B0%20%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84%E6%96%B9%0A%0A%20%20%20%20%23%23%23%20%E6%9C%80%E3%82%82%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E4%BE%8B%EF%BC%9A%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%0A%0A%20%20%20%20%60apply()%60%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E5%9F%BA%E6%9C%AC%E6%A7%8B%E6%96%87%EF%BC%9A%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20result%20%3D%20frame.apply(func%2C%20**params)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20-%20%60func%60%3A%20%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%EF%BC%88%E7%AC%AC1%E5%BC%95%E6%95%B0%E3%81%AF%E9%85%8D%E5%88%97%EF%BC%89%0A%20%20%20%20-%20%60**params%60%3A%20%E9%96%A2%E6%95%B0%E3%81%AB%E6%B8%A1%E3%81%99%E8%BF%BD%E5%8A%A0%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal)%3A%0A%20%20%20%20%23%20%E4%BE%8B1%3A%20%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E9%96%A2%E6%95%B0%0A%20%20%20%20def%20scale(x%2C%20factor)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E4%BF%A1%E5%8F%B7%E3%82%92%E6%8C%87%E5%AE%9A%E5%80%8D%E7%8E%87%E3%81%A7%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%22%22%22%0A%20%20%20%20%20%20%20%20return%20x%20*%20factor%0A%0A%20%20%20%20%23%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%82%92%E9%81%A9%E7%94%A8%EF%BC%882%E5%80%8D%E3%81%AB%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%EF%BC%89%0A%20%20%20%20scaled%20%3D%20demo_signal.apply(%0A%20%20%20%20%20%20%20%20scale%2C%0A%20%20%20%20%20%20%20%20output_shape_func%3Dlambda%20shape%3A%20shape%2C%20%20%23%20%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%81%AF%E5%85%A5%E5%8A%9B%E3%81%A8%E5%90%8C%E3%81%98%0A%20%20%20%20%20%20%20%20factor%3D2.0%2C%0A%20%20%20%20)%0A%0A%20%20%20%20print(%22%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E9%81%A9%E7%94%A8%3A%22)%0A%20%20%20%20print(f%22%20%20%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%E3%81%AE%E6%9C%80%E5%A4%A7%E5%80%A4%3A%20%7Bdemo_signal.data.max()%3A.3f%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E5%BE%8C%E3%81%AE%E6%9C%80%E5%A4%A7%E5%80%A4%3A%20%7Bscaled.data.max()%3A.3f%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%83%A9%E3%83%99%E3%83%AB%3A%20%7Bscaled.labels%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%93%90%20%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%81%AE%E5%88%B6%E5%BE%A1%0A%0A%20%20%20%20%23%23%23%20%60output_shape_func%60%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%0A%0A%20%20%20%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%86%E9%9A%9B%E3%80%81%60output_shape_func%60%E3%81%A7%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%8C%E5%90%91%E4%B8%8A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%60output_shape_func%60%E3%81%AF%E3%80%81%E5%85%A5%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8A%E3%80%81%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%82%92%E8%BF%94%E3%81%99%E9%96%A2%E6%95%B0%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%80%81Wandas%E3%81%AF%E8%87%AA%E5%8B%95%E6%8E%A8%E8%AB%96%E3%82%92%E8%A9%A6%E3%81%BF%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E9%96%A2%E6%95%B0%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E3%81%8C%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%60%60%60python%0A%0A%20%20%20%20%23%20%E8%87%AA%E5%8B%95%E6%8E%A8%E8%AB%96%EF%BC%88%E9%96%A2%E6%95%B0%E3%81%8C1%E5%9B%9E%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%EF%BC%89%0A%20%20%20%20result%20%3D%20demo_signal.apply(some_func)%0A%0A%20%20%20%20%23%20%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%8C%87%E5%AE%9A%EF%BC%88%E6%8E%A8%E5%A5%A8%EF%BC%9A%E6%8E%A8%E8%AB%96%E3%82%B3%E3%82%B9%E3%83%88%E3%82%92%E5%9B%9E%E9%81%BF%EF%BC%89%0A%20%20%20%20result%20%3D%20demo_signal.apply(%0A%20%20%20%20%20%20%20%20some_func%2C%0A%20%20%20%20%20%20%20%20output_shape_func%3Dlambda%20shape%3A%20shape%0A%20%20%20%20)%0A%0A%20%20%20%20**%E3%81%AA%E3%81%9C%E5%BF%85%E8%A6%81%EF%BC%9F**%0A%20%20%20%20-%20Dask%E3%81%AE%E9%81%85%E5%BB%B6%E8%A9%95%E4%BE%A1%E3%81%A7%E3%81%AF%E3%80%81%E5%AE%9F%E9%9A%9B%E3%81%AB%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%82%92%E7%9F%A5%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%0A%20%20%20%20-%20%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AA%E3%83%A1%E3%83%A2%E3%83%AA%E7%AE%A1%E7%90%86%E3%81%A8%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%B0%E3%83%A9%E3%83%95%E6%A7%8B%E7%AF%89%E3%81%AE%E3%81%9F%E3%82%81%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal)%3A%0A%20%20%20%20%23%20%E4%BE%8B2%3A%20%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%EF%BC%88%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E6%95%B0%E3%82%92%E5%8D%8A%E5%88%86%E3%81%AB%EF%BC%89%0A%20%20%20%20def%20downsample_by_half(x)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E5%81%B6%E6%95%B0%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E3%81%BF%E3%82%92%E8%BF%94%E3%81%99%22%22%22%0A%20%20%20%20%20%20%20%20return%20x%5B%3A%2C%20%3A%3A2%5D%0A%0A%20%20%20%20%23%20%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%0A%20%20%20%20def%20half_shape(input_shape)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E5%85%A5%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%81%8B%E3%82%89%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%82%92%E8%A8%88%E7%AE%97%22%22%22%0A%20%20%20%20%20%20%20%20channels%2C%20samples%20%3D%20input_shape%0A%20%20%20%20%20%20%20%20return%20(channels%2C%20samples%20%2F%2F%202)%0A%0A%20%20%20%20%23%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%92%E9%81%A9%E7%94%A8%0A%20%20%20%20downsampled%20%3D%20demo_signal.apply(downsample_by_half%2C%20output_shape_func%3Dhalf_shape)%0A%0A%20%20%20%20print(%22%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E9%81%A9%E7%94%A8%3A%22)%0A%20%20%20%20print(f%22%20%20%E5%85%83%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E6%95%B0%3A%20%7Bdemo_signal.n_samples%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E5%BE%8C%3A%20%7Bdownsampled.n_samples%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%83%A9%E3%83%99%E3%83%AB%3A%20%7Bdownsampled.labels%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%94%97%20%E6%97%A2%E5%AD%98%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A8%E3%81%AE%E7%B5%B1%E5%90%88%0A%0A%20%20%20%20%23%23%23%20SciPy%E3%81%AE%E9%96%A2%E6%95%B0%E3%82%92%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80%0A%0A%20%20%20%20SciPy%E3%81%AA%E3%81%A9%E6%97%A2%E5%AD%98%E3%81%AE%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E9%96%A2%E6%95%B0%E3%82%82%20%60apply()%60%20%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal%2C%20plt%2C%20scipy_signal)%3A%0A%20%20%20%20%23%20%E4%BE%8B3%3A%20SciPy%E3%81%AE%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%82%92%E4%BD%BF%E3%81%86%0A%20%20%20%20def%20median_filter(x%2C%20kernel_size)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%82%92%E5%90%84%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AB%E9%81%A9%E7%94%A8%22%22%22%0A%20%20%20%20%20%20%20%20result%20%3D%20scipy_signal.medfilt(x%2C%20kernel_size%3D(1%2C%20kernel_size))%0A%20%20%20%20%20%20%20%20return%20result%0A%0A%20%20%20%20filtered%20%3D%20demo_signal.apply(median_filter%2C%20output_shape_func%3Dlambda%20shape%3A%20shape%2C%20kernel_size%3D11)%0A%20%20%20%20%23%20%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%82%92%E9%81%A9%E7%94%A8%EF%BC%88%E3%83%8E%E3%82%A4%E3%82%BA%E9%99%A4%E5%8E%BB%EF%BC%89%0A%20%20%20%20(_fig%2C%20_axes)%20%3D%20plt.subplots(2%2C%201%2C%20figsize%3D(12%2C%208))%0A%20%20%20%20demo_signal.plot(ax%3D_axes%5B0%5D%2C%20time_range%3D(0%2C%200.2))%0A%20%20%20%20_axes%5B0%5D.set_title(%22%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%EF%BC%88%E3%83%8E%E3%82%A4%E3%82%BA%E3%81%82%E3%82%8A%EF%BC%89%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22%E6%99%82%E9%96%93%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B0%5D.grid(True%2C%20alpha%3D0.3)%0A%20%20%20%20filtered.plot(ax%3D_axes%5B1%5D%2C%20time_range%3D(0%2C%200.2))%0A%20%20%20%20%23%20%E7%B5%90%E6%9E%9C%E3%82%92%E6%AF%94%E8%BC%83%0A%20%20%20%20_axes%5B1%5D.set_title(%22%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E9%81%A9%E7%94%A8%E5%BE%8C%EF%BC%88%E3%83%8E%E3%82%A4%E3%82%BA%E9%99%A4%E5%8E%BB%EF%BC%89%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22%E6%99%82%E9%96%93%20%5Bs%5D%22)%0A%20%20%20%20%23%20%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%0A%20%20%20%20_axes%5B1%5D.grid(True%2C%20alpha%3D0.3)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20print(%22%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E9%81%A9%E7%94%A8%E5%AE%8C%E4%BA%86%22)%0A%20%20%20%20%23%20%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E5%BE%8C%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%83%A9%E3%83%99%E3%83%AB%3A%20%7Bfiltered.labels%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E2%9B%93%EF%B8%8F%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%B8%E3%81%AE%E7%B5%B1%E5%90%88%0A%0A%20%20%20%20%23%23%23%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%82%82%E6%A8%99%E6%BA%96%E6%A9%9F%E8%83%BD%E3%81%A8%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%89%E3%82%8C%E3%82%8B%0A%0A%20%20%20%20%60apply()%60%20%E3%81%AE%E6%88%BB%E3%82%8A%E5%80%A4%E3%81%AF%E9%80%9A%E5%B8%B8%E3%81%AE%20%60ChannelFrame%60%20%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%0A%20%20%20%20%E4%BB%96%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%A8%E8%87%AA%E7%94%B1%E3%81%AB%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal%2C%20np)%3A%0A%20%20%20%20%23%20%E4%BE%8B4%3A%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%81%A8%E6%A8%99%E6%BA%96%E6%A9%9F%E8%83%BD%E3%82%92%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%0A%20%20%20%20def%20clip_amplitude(x%2C%20threshold)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E6%8C%AF%E5%B9%85%E3%82%92%E6%8C%87%E5%AE%9A%E5%80%A4%E3%81%A7%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%22%22%22%0A%20%20%20%20%20%20%20%20return%20np.clip(x%2C%20-threshold%2C%20threshold)%0A%0A%20%20%20%20%23%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%EF%BC%9A%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%20%E2%86%92%20%E6%AD%A3%E8%A6%8F%E5%8C%96%20%E2%86%92%20%E3%83%AD%E3%83%BC%E3%83%91%E3%82%B9%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%0A%20%20%20%20processed%20%3D%20(%0A%20%20%20%20%20%20%20%20demo_signal.apply(clip_amplitude%2C%20output_shape_func%3Dlambda%20shape%3A%20shape%2C%20threshold%3D0.5)%0A%20%20%20%20%20%20%20%20.normalize()%0A%20%20%20%20%20%20%20%20.low_pass_filter(cutoff%3D150)%0A%20%20%20%20)%0A%0A%20%20%20%20print(%22%E8%A4%87%E6%95%B0%E5%87%A6%E7%90%86%E3%81%AE%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E9%81%A9%E7%94%A8%3A%22)%0A%20%20%20%20print(f%22%20%20%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%E3%81%AE%E9%95%B7%E3%81%95%3A%20%7Blen(processed.operation_history)%7D%22)%0A%20%20%20%20print(f%22%20%20%E6%9C%80%E7%B5%82%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%83%A9%E3%83%99%E3%83%AB%3A%20%7Bprocessed.labels%7D%22)%0A%20%20%20%20print(%22%5Cn%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%3A%22)%0A%20%20%20%20for%20i%2C%20op%20in%20enumerate(processed.operation_history%2C%201)%3A%0A%20%20%20%20%20%20%20%20print(f%22%20%20%7Bi%7D.%20%7Bop%5B'operation'%5D%7D%20-%20%7Bop.get('params'%2C%20%7B%7D)%7D%22)%0A%0A%20%20%20%20demo_signal.describe()%0A%20%20%20%20processed.describe()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%9A%80%20%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E4%BE%8B%0A%0A%20%20%20%20%23%23%23%20%E4%BE%8B1%3A%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%0A%0A%20%20%20%20%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E3%81%99%E3%81%8C%E5%AE%9F%E7%94%A8%E7%9A%84%E3%81%AA%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20moving_average(x%2C%20window_size)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%22%22%22%0A%20%20%20%20%20%20%20%20result%20%3D%20np.zeros_like(x)%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(x.shape%5B0%5D)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20kernel%20%3D%20np.ones(window_size)%20%2F%20window_size%20%20%23%20%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%A7%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%82%92%E8%A8%88%E7%AE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20result%5Bi%5D%20%3D%20np.convolve(x%5Bi%5D%2C%20kernel%2C%20mode%3D%22same%22)%0A%20%20%20%20%20%20%20%20return%20result%0A%0A%20%20%20%20smoothed%20%3D%20demo_signal.apply(moving_average%2C%20output_shape_func%3Dlambda%20shape%3A%20shape%2C%20window_size%3D51)%0A%20%20%20%20(_fig%2C%20_ax)%20%3D%20plt.subplots(figsize%3D(12%2C%205))%0A%20%20%20%20%23%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%82%92%E9%81%A9%E7%94%A8%0A%20%20%20%20demo_signal.plot(ax%3D_ax%2C%20time_range%3D(0.5%2C%201.0)%2C%20label%3D%22%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%22%2C%20alpha%3D0.5)%0A%20%20%20%20smoothed.plot(ax%3D_ax%2C%20time_range%3D(0.5%2C%201.0)%2C%20label%3D%22%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E9%81%A9%E7%94%A8%E5%BE%8C%22%2C%20linewidth%3D2)%0A%20%20%20%20_ax.set_title(%22%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%81%AE%E5%8A%B9%E6%9E%9C%22)%0A%20%20%20%20_ax.set_xlabel(%22%E6%99%82%E9%96%93%20%5Bs%5D%22)%20%20%23%2051%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E7%AA%93%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_ax.grid(True%2C%20alpha%3D0.3)%0A%20%20%20%20%23%20%E7%B5%90%E6%9E%9C%E3%82%92%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20print(%22%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E9%81%A9%E7%94%A8%E5%AE%8C%E4%BA%86%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E4%BE%8B2%3A%20%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%E6%8A%BD%E5%87%BA%0A%0A%20%20%20%20%E4%BF%A1%E5%8F%B7%E3%81%AE%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%EF%BC%88%E5%8C%85%E7%B5%A1%E7%B7%9A%EF%BC%89%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20extract_envelope(x%2C%20window_size)%3A%0A%20%20%20%20%20%20%20%20%22%22%22Hilbert%E5%A4%89%E6%8F%9B%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%E6%8A%BD%E5%87%BA%22%22%22%0A%20%20%20%20%20%20%20%20from%20scipy.signal%20import%20hilbert%0A%0A%20%20%20%20%20%20%20%20result%20%3D%20np.zeros_like(x)%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(x.shape%5B0%5D)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20analytic_signal%20%3D%20hilbert(x%5Bi%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20envelope%20%3D%20np.abs(analytic_signal)%20%20%23%20Hilbert%E5%A4%89%E6%8F%9B%E3%81%A7%E8%A7%A3%E6%9E%90%E4%BF%A1%E5%8F%B7%E3%82%92%E5%8F%96%E5%BE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20kernel%20%3D%20np.ones(window_size)%20%2F%20window_size%0A%20%20%20%20%20%20%20%20%20%20%20%20result%5Bi%5D%20%3D%20np.convolve(envelope%2C%20kernel%2C%20mode%3D%22same%22)%20%20%23%20%E6%8C%AF%E5%B9%85%EF%BC%88%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%EF%BC%89%E3%82%92%E8%A8%88%E7%AE%97%0A%20%20%20%20%20%20%20%20return%20result%0A%0A%20%20%20%20envelope%20%3D%20demo_signal.apply(%0A%20%20%20%20%20%20%20%20extract_envelope%2C%20output_shape_func%3Dlambda%20shape%3A%20shape%2C%20window_size%3D101%0A%20%20%20%20)%20%20%23%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%81%A7%E3%82%B9%E3%83%A0%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%0A%20%20%20%20(_fig%2C%20_ax)%20%3D%20plt.subplots(figsize%3D(12%2C%205))%0A%20%20%20%20demo_signal.plot(ax%3D_ax%2C%20label%3D%22%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%22%2C%20alpha%3D0.6)%0A%20%20%20%20envelope.plot(ax%3D_ax%2C%20label%3D%22%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%22%2C%20linewidth%3D2%2C%20color%3D%22red%22)%0A%20%20%20%20_ax.set_title(%22%E4%BF%A1%E5%8F%B7%E3%81%AE%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%E6%8A%BD%E5%87%BA%22)%0A%20%20%20%20%23%20%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%E3%82%92%E6%8A%BD%E5%87%BA%0A%20%20%20%20_ax.set_xlabel(%22%E6%99%82%E9%96%93%20%5Bs%5D%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_ax.grid(True%2C%20alpha%3D0.3)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20print(%22%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%E6%8A%BD%E5%87%BA%E5%AE%8C%E4%BA%86%22)%0A%20%20%20%20%23%20%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%83%A9%E3%83%99%E3%83%AB%3A%20%7Benvelope.labels%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E4%BE%8B3%3A%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B2%E3%82%A4%E3%83%B3%E9%96%A2%E6%95%B0%0A%0A%20%20%20%20%E5%91%A8%E6%B3%A2%E6%95%B0%E4%BE%9D%E5%AD%98%E3%81%AE%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%96%E3%82%92%E9%81%A9%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(demo_signal%2C%20np%2C%20plt%2C%20sampling_rate)%3A%0A%20%20%20%20def%20frequency_dependent_gain(x%2C%20sr%2C%20gain_curve)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%E5%91%A8%E6%B3%A2%E6%95%B0%E4%BE%9D%E5%AD%98%E3%81%AE%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%92%E9%81%A9%E7%94%A8%0A%0A%20%20%20%20%20%20%20%20Parameters%0A%20%20%20%20%20%20%20%20----------%0A%20%20%20%20%20%20%20%20x%20%3A%20ndarray%0A%20%20%20%20%20%20%20%20%20%20%20%20%E5%85%A5%E5%8A%9B%E4%BF%A1%E5%8F%B7%0A%20%20%20%20%20%20%20%20sr%20%3A%20float%0A%20%20%20%20%20%20%20%20%20%20%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%EF%BC%88Wandas%E3%81%8B%E3%82%89%E8%87%AA%E5%8B%95%E5%8F%96%E5%BE%97%E4%B8%8D%E5%8F%AF%E3%81%AE%E3%81%9F%E3%82%81%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%B8%A1%E3%81%99%EF%BC%89%0A%20%20%20%20%20%20%20%20gain_curve%20%3A%20callable%0A%20%20%20%20%20%20%20%20%20%20%20%20%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8A%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%92%E8%BF%94%E3%81%99%E9%96%A2%E6%95%B0%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20result%20%3D%20np.zeros_like(x%2C%20dtype%3Dcomplex)%0A%20%20%20%20%20%20%20%20spectrum%20%3D%20np.fft.rfft(x%2C%20axis%3D1)%0A%20%20%20%20%20%20%20%20freqs%20%3D%20np.fft.rfftfreq(x.shape%5B1%5D%2C%20d%3D1%20%2F%20sr)%20%20%23%20FFT%0A%20%20%20%20%20%20%20%20gains%20%3D%20np.array(%5Bgain_curve(f)%20for%20f%20in%20freqs%5D)%0A%20%20%20%20%20%20%20%20spectrum%20*%3D%20gains%5Bnp.newaxis%2C%20%3A%5D%0A%20%20%20%20%20%20%20%20result%20%3D%20np.fft.irfft(spectrum%2C%20n%3Dx.shape%5B1%5D%2C%20axis%3D1)%0A%20%20%20%20%20%20%20%20return%20result.real%20%20%23%20%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%96%E3%82%92%E9%81%A9%E7%94%A8%EF%BC%88%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E5%8C%96%EF%BC%89%0A%0A%20%20%20%20def%20low_freq_emphasis(freq)%3A%20%20%23%20%E3%83%96%E3%83%AD%E3%83%BC%E3%83%89%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%E3%81%A7%E5%85%A8%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AB%E9%81%A9%E7%94%A8%0A%20%20%20%20%20%20%20%20%22%22%22%E4%BD%8E%E5%91%A8%E6%B3%A2%E3%82%92%E5%BC%B7%E8%AA%BF%E3%81%99%E3%82%8B%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%96%22%22%22%0A%20%20%20%20%20%20%20%20if%20freq%20%3C%2080%3A%20%20%23%20%E9%80%86FFT%0A%20%20%20%20%20%20%20%20%20%20%20%20return%202.0%0A%20%20%20%20%20%20%20%20elif%20freq%20%3C%20150%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201.5%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%96%E3%82%92%E5%AE%9A%E7%BE%A9%EF%BC%88%E4%BD%8E%E5%91%A8%E6%B3%A2%E3%82%92%E5%BC%B7%E8%AA%BF%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200.5%0A%0A%20%20%20%20gained%20%3D%20demo_signal.apply(%0A%20%20%20%20%20%20%20%20frequency_dependent_gain%2C%20output_shape_func%3Dlambda%20shape%3A%20shape%2C%20sr%3Dsampling_rate%2C%20gain_curve%3Dlow_freq_emphasis%0A%20%20%20%20)%0A%20%20%20%20(_fig%2C%20_axes)%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(14%2C%205))%0A%20%20%20%20demo_signal.fft().plot(ax%3D_axes%5B0%5D%2C%20freq_range%3D(0%2C%20300))%0A%20%20%20%20_axes%5B0%5D.set_title(%22%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%E3%81%AE%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22%E5%91%A8%E6%B3%A2%E6%95%B0%20%5BHz%5D%22)%0A%20%20%20%20_axes%5B0%5D.grid(True%2C%20alpha%3D0.3)%0A%20%20%20%20gained.fft().plot(ax%3D_axes%5B1%5D%2C%20freq_range%3D(0%2C%20300))%0A%20%20%20%20_axes%5B1%5D.set_title(%22%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B2%E3%82%A4%E3%83%B3%E9%81%A9%E7%94%A8%E5%BE%8C%E3%81%AE%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB%22)%0A%20%20%20%20%23%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%92%E9%81%A9%E7%94%A8%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22%E5%91%A8%E6%B3%A2%E6%95%B0%20%5BHz%5D%22)%0A%20%20%20%20_axes%5B1%5D.grid(True%2C%20alpha%3D0.3)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%20%20%23%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%B8%A1%E3%81%99%0A%20%20%20%20print(%22%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B2%E3%82%A4%E3%83%B3%E9%81%A9%E7%94%A8%E5%AE%8C%E4%BA%86%22)%0A%20%20%20%20print(%22%20%20%E4%BD%8E%E5%91%A8%E6%B3%A2%EF%BC%88%3C80Hz%EF%BC%89%E3%82%922%E5%80%8D%E3%81%AB%E5%BC%B7%E8%AA%BF%22)%0A%20%20%20%20print(%22%20%20%E4%B8%AD%E5%91%A8%E6%B3%A2%EF%BC%8880-150Hz%EF%BC%89%E3%82%921.5%E5%80%8D%E3%81%AB%E5%BC%B7%E8%AA%BF%22)%0A%20%20%20%20%23%20%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB%E3%81%A7%E6%AF%94%E8%BC%83%0A%20%20%20%20%23%20%E5%85%83%E3%81%AE%E4%BF%A1%E5%8F%B7%E3%81%AE%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB%0A%20%20%20%20%23%20%E3%82%B2%E3%82%A4%E3%83%B3%E9%81%A9%E7%94%A8%E5%BE%8C%E3%81%AE%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB%0A%20%20%20%20print(%22%20%20%E9%AB%98%E5%91%A8%E6%B3%A2%EF%BC%88%3E150Hz%EF%BC%89%E3%82%920.5%E5%80%8D%E3%81%AB%E6%B8%9B%E8%A1%B0%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%92%A1%20%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9%0A%0A%20%20%20%20%23%23%23%201.%20%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%81%AF%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%20%E2%9D%8C%20%E6%8E%A8%E5%A5%A8%E3%81%97%E3%81%AA%E3%81%84%EF%BC%9A%E5%BD%A2%E7%8A%B6%E6%8E%A8%E8%AB%96%E3%81%AB%E9%A0%BC%E3%82%8B%0A%20%20%20%20result%20%3D%20frame.apply(some_func)%0A%0A%20%20%20%20%23%20%E2%9C%85%20%E6%8E%A8%E5%A5%A8%EF%BC%9A%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%8C%87%E5%AE%9A%0A%20%20%20%20result%20%3D%20frame.apply(%0A%20%20%20%20%20%20%20%20some_func%2C%0A%20%20%20%20%20%20%20%20output_shape_func%3Dlambda%20shape%3A%20shape%0A%20%20%20%20)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20**%E7%90%86%E7%94%B1**%3A%20%E5%BD%A2%E7%8A%B6%E6%8E%A8%E8%AB%96%E3%81%AF%E9%96%A2%E6%95%B0%E3%82%921%E5%9B%9E%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E5%89%AF%E4%BD%9C%E7%94%A8%E3%81%8C%E3%81%82%E3%82%8B%E9%96%A2%E6%95%B0%E3%82%84%E9%87%8D%E3%81%84%E5%87%A6%E7%90%86%E3%81%A7%E3%81%AF%E5%95%8F%E9%A1%8C%E3%81%AB%E3%81%AA%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%202.%20%E9%96%A2%E6%95%B0%E3%81%AB%E5%90%8D%E5%89%8D%E3%82%92%E4%BB%98%E3%81%91%E3%82%8B%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%20%E2%9D%8C%20%E6%8E%A8%E5%A5%A8%E3%81%97%E3%81%AA%E3%81%84%EF%BC%9A%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8F%0A%20%20%20%20result%20%3D%20frame.apply(lambda%20x%3A%20x%20*%202%2C%20output_shape_func%3Dlambda%20s%3A%20s)%0A%0A%20%20%20%20%23%20%E2%9C%85%20%E6%8E%A8%E5%A5%A8%EF%BC%9A%E5%90%8D%E5%89%8D%E4%BB%98%E3%81%8D%E9%96%A2%E6%95%B0%0A%20%20%20%20def%20double(x)%3A%0A%20%20%20%20%20%20%20%20return%20x%20*%202%0A%0A%20%20%20%20result%20%3D%20frame.apply(double%2C%20output_shape_func%3Dlambda%20s%3A%20s)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20**%E7%90%86%E7%94%B1**%3A%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%83%A9%E3%83%99%E3%83%AB%E3%81%AB%E9%96%A2%E6%95%B0%E5%90%8D%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%80%81%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%E3%81%8C%E5%88%86%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%203.%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AF%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%B8%A1%E3%81%99%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%20%E2%9D%8C%20%E6%8E%A8%E5%A5%A8%E3%81%97%E3%81%AA%E3%81%84%EF%BC%9A%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%A4%89%E6%95%B0%E3%82%92%E5%8F%82%E7%85%A7%0A%20%20%20%20threshold%20%3D%201.5%0A%20%20%20%20def%20clip(x)%3A%0A%20%20%20%20%20%20%20%20return%20np.clip(x%2C%20-threshold%2C%20threshold)%0A%0A%20%20%20%20%23%20%E2%9C%85%20%E6%8E%A8%E5%A5%A8%EF%BC%9A%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%97%E3%81%A6%E6%B8%A1%E3%81%99%0A%20%20%20%20def%20clip(x%2C%20threshold)%3A%0A%20%20%20%20%20%20%20%20return%20np.clip(x%2C%20-threshold%2C%20threshold)%0A%0A%20%20%20%20result%20%3D%20frame.apply(clip%2C%20output_shape_func%3Dlambda%20s%3A%20s%2C%20threshold%3D1.5)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20**%E7%90%86%E7%94%B1**%3A%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%8C%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%E3%81%AB%E8%A8%98%E9%8C%B2%E3%81%95%E3%82%8C%E3%80%81%E5%86%8D%E7%8F%BE%E6%80%A7%E3%81%8C%E5%90%91%E4%B8%8A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%204.%20%E9%85%8D%E5%88%97%E3%81%AE%E5%BD%A2%E7%8A%B6%E3%81%AB%E6%B3%A8%E6%84%8F%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%20Wandas%E3%81%AE%E9%85%8D%E5%88%97%E5%BD%A2%E7%8A%B6%E3%81%AF%20(channels%2C%20samples)%0A%20%20%20%20def%20process_each_channel(x)%3A%0A%20%20%20%20%20%20%20%20result%20%3D%20np.zeros_like(x)%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(x.shape%5B0%5D)%3A%20%20%23%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%94%E3%81%A8%E3%81%AB%E3%83%AB%E3%83%BC%E3%83%97%0A%20%20%20%20%20%20%20%20%20%20%20%20result%5Bi%5D%20%3D%20some_operation(x%5Bi%5D)%0A%20%20%20%20%20%20%20%20return%20result%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20%23%23%23%205.%20%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20def%20custom_filter(x%2C%20cutoff%2C%20order)%3A%0A%20%20%20%20%20%20%20%20%5C%22%5C%22%5C%22%0A%20%20%20%20%20%20%20%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%82%92%E9%81%A9%E7%94%A8%0A%0A%20%20%20%20%20%20%20%20Parameters%0A%20%20%20%20%20%20%20%20----------%0A%20%20%20%20%20%20%20%20x%20%3A%20ndarray%2C%20shape%20(channels%2C%20samples)%0A%20%20%20%20%20%20%20%20%20%20%20%20%E5%85%A5%E5%8A%9B%E4%BF%A1%E5%8F%B7%0A%20%20%20%20%20%20%20%20cutoff%20%3A%20float%0A%20%20%20%20%20%20%20%20%20%20%20%20%E3%82%AB%E3%83%83%E3%83%88%E3%82%AA%E3%83%95%E5%91%A8%E6%B3%A2%E6%95%B0%20%5BHz%5D%0A%20%20%20%20%20%20%20%20order%20%3A%20int%0A%20%20%20%20%20%20%20%20%20%20%20%20%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E6%AC%A1%E6%95%B0%0A%0A%20%20%20%20%20%20%20%20Returns%0A%20%20%20%20%20%20%20%20-------%0A%20%20%20%20%20%20%20%20ndarray%0A%20%20%20%20%20%20%20%20%20%20%20%20%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E9%81%A9%E7%94%A8%E5%BE%8C%E3%81%AE%E4%BF%A1%E5%8F%B7%0A%20%20%20%20%20%20%20%20%5C%22%5C%22%5C%22%0A%20%20%20%20%20%20%20%20%23%20%E5%AE%9F%E8%A3%85...%0A%20%20%20%20%60%60%60%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E2%9A%A0%EF%B8%8F%20%E5%88%B6%E9%99%90%E4%BA%8B%E9%A0%85%E3%81%A8%E6%B3%A8%E6%84%8F%E7%82%B9%0A%0A%20%20%20%20%23%23%23%201.%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%81%B8%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%0A%0A%20%20%20%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E5%86%85%E3%81%8B%E3%82%89%E3%81%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%0A%20%20%20%20%E5%BF%85%E8%A6%81%E3%81%AA%E5%A0%B4%E5%90%88%E3%81%AF%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%97%E3%81%A6%E6%B8%A1%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20def%20needs_sr(x%2C%20sr)%3A%0A%20%20%20%20%20%20%20%20%23%20sampling_rate%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E5%87%A6%E7%90%86%0A%20%20%20%20%20%20%20%20pass%0A%0A%20%20%20%20result%20%3D%20frame.apply(%0A%20%20%20%20%20%20%20%20needs_sr%2C%0A%20%20%20%20%20%20%20%20output_shape_func%3Dlambda%20s%3A%20s%2C%0A%20%20%20%20%20%20%20%20sr%3Dframe.sampling_rate%0A%20%20%20%20)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20%23%23%23%202.%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%9B%B4%E6%96%B0%0A%0A%20%20%20%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%81%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%0A%20%20%20%20%E3%83%AA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E5%A0%B4%E5%90%88%E3%81%AF%20%60%20%20ChannelFrame.resample()%60%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%0A%0A%20%20%20%20%23%23%23%203.%20%E8%A4%87%E6%95%B0%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AE%E5%87%A6%E7%90%86%0A%0A%20%20%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%95%B0%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86%EF%BC%88%E4%BE%8B%EF%BC%9A%E3%82%B9%E3%83%86%E3%83%AC%E3%82%AA%E2%86%92%E3%83%A2%E3%83%8E%E3%83%A9%E3%83%AB%E5%A4%89%E6%8F%9B%EF%BC%89%E3%81%AF%E3%80%81%0A%20%20%20%20%60output_shape_func%60%20%E3%81%A7%E6%AD%A3%E3%81%97%E3%81%84%E5%BD%A2%E7%8A%B6%E3%82%92%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%93%9D%20%E3%81%BE%E3%81%A8%E3%82%81%0A%0A%20%20%20%20%E3%81%93%E3%81%AEmarimo%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E3%81%AF%E3%80%81%E4%BB%A5%E4%B8%8B%E3%82%92%E5%AD%A6%E3%81%B3%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%9A%0A%0A%20%20%20%20%E2%9C%85%20**%60apply()%60%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84%E6%96%B9**%0A%20%20%20%20-%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%82%92%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AB%E7%B5%B1%E5%90%88%0A%20%20%20%20-%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AE%E6%B8%A1%E3%81%97%E6%96%B9%0A%0A%20%20%20%20%E2%9C%85%20**%E5%87%BA%E5%8A%9B%E5%BD%A2%E7%8A%B6%E3%81%AE%E5%88%B6%E5%BE%A1**%0A%20%20%20%20-%20%60output_shape_func%60%20%E3%81%AB%E3%82%88%E3%82%8B%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AA%E5%BD%A2%E7%8A%B6%E6%8C%87%E5%AE%9A%0A%20%20%20%20-%20%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AA%E3%81%A9%E5%BD%A2%E7%8A%B6%E3%81%8C%E5%A4%89%E3%82%8F%E3%82%8B%E5%87%A6%E7%90%86%E3%81%B8%E3%81%AE%E5%AF%BE%E5%BF%9C%0A%0A%20%20%20%20%E2%9C%85%20**%E6%97%A2%E5%AD%98%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A8%E3%81%AE%E7%B5%B1%E5%90%88**%0A%20%20%20%20-%20SciPy%E3%81%AA%E3%81%A9%E5%A4%96%E9%83%A8%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E9%96%A2%E6%95%B0%E3%82%92%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80%0A%20%20%20%20-%20NumPy%2FSciPy%E3%81%AE%E8%B1%8A%E5%AF%8C%E3%81%AA%E6%A9%9F%E8%83%BD%E3%82%92%E6%B4%BB%E7%94%A8%0A%0A%20%20%20%20%E2%9C%85%20**%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3**%0A%20%20%20%20-%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%81%A8%E6%A8%99%E6%BA%96%E6%A9%9F%E8%83%BD%E3%82%92%E8%87%AA%E7%94%B1%E3%81%AB%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%0A%20%20%20%20-%20%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%E3%81%AE%E8%87%AA%E5%8B%95%E8%A8%98%E9%8C%B2%0A%0A%20%20%20%20%E2%9C%85%20**%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E4%BE%8B**%0A%20%20%20%20-%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%80%81%E3%82%A8%E3%83%B3%E3%83%99%E3%83%AD%E3%83%BC%E3%83%97%E6%8A%BD%E5%87%BA%E3%80%81%E5%91%A8%E6%B3%A2%E6%95%B0%E4%BE%9D%E5%AD%98%E3%82%B2%E3%82%A4%E3%83%B3%0A%20%20%20%20-%20%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9%E3%81%A8%E6%B3%A8%E6%84%8F%E7%82%B9%0A%0A%20%20%20%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%80%81Wandas%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E8%87%AA%E7%94%B1%E3%81%AB%E6%8B%A1%E5%BC%B5%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%EF%BC%81%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
095bca6e8693aa85ac5703b0ec3a606f