下の例に従って,sin(i/13)とsin(i/2)の合成波を作成し,FFTをかけた後,周波数での強度を表示せよ.合成波(2sin(i2)+sin(i/2))との違いをのべよ.
%matplotlib inline
from scipy.fft import fft
import matplotlib.pyplot as plt
import numpy as np
def func(i):
return np.sin(i/(13))+np.sin(i/(2))
i= np.linspace(0, 256, 256) #0から2πまでの範囲を100分割したnumpy配列
plt.plot(i, np.sin(i/(13)), color = 'r', linewidth=0.8)
plt.plot(i, np.sin(i/(2)), color = 'b', linewidth=0.8)
plt.grid()
plt.show()
plt.plot(i, func(i))
[<matplotlib.lines.Line2D at 0x7fa612052070>]
yy = func(i)
out = fft(yy)
def spectrum_power(x):
re, im = x.real, x.imag
return np.sqrt(re**2+im**2)
plt.plot(i,spectrum_power(out))
plt.xlim(0,128)
plt.ylim(0, 250)
plt.show()
plt.plot(i,spectrum_power(out))
plt.xlim(0,128)
plt.yscale('log')
plt.show()
%matplotlib inline
from scipy.fft import fft
import matplotlib.pyplot as plt
import numpy as np
def func(i):
return np.sin(i*2)*2+np.sin(i/(2))
i= np.linspace(0, 256, 256) #0から2πまでの範囲を100分割したnumpy配列
plt.plot(i, np.sin(i/(13)), color = 'r', linewidth=0.8)
plt.plot(i, np.sin(i/(2)), color = 'b', linewidth=0.8)
plt.grid()
plt.show()
plt.plot(i, func(i))
[<matplotlib.lines.Line2D at 0x7fa6121a8790>]
yy = func(i)
out = fft(yy)
def spectrum_power(x):
re, im = x.real, x.imag
return np.sqrt(re**2+im**2)
plt.plot(i,spectrum_power(out))
plt.xlim(0,128)
plt.ylim(0, 250)
plt.show()
plt.plot(i,spectrum_power(out))
plt.xlim(0,128)
plt.yscale('log')
plt.show()
$\sin\left(\frac{i}{13}\right) + \sin\left(\frac{i}{2}\right)$
$\sin\left(2i\right)+\sin\left(\frac{i}{2}\right)$