DSP筆記2_使用 NumPy練習繪製連續時間訊號正弦波(Sine)_餘弦波(Cosine)_跟離散時間訊號繪製_stem用法
從 0 秒取樣到 0.999 秒,每隔:0.001秒取一個樣本。
plt.plot(t, xt)會把點連起來,像連續波形。
程式碼
import numpy as np import matplotlib.pyplot as plt t = np.arange(0, 1, 0.001) #print(t) xt = np.sin(2*np.pi*3*t) plt.plot(t, xt) plt.title("Sine Wave") plt.xlabel("Time") plt.ylabel("Amplitude") plt.show() xt = np.cos(2*np.pi*3*t) plt.plot(t, xt) plt.title("Cosine Wave") plt.xlabel("Time") plt.ylabel("Amplitude") plt.show()
正弦波最標準的數學式通常寫成:
符號
- A : 振幅 Amplitude
- f : 頻率 Frequency ,每秒完成幾個週期。
- t : 時間 Time
- ϕ : 初始相位 Phase
- 2πf : 角頻率,圓的一整圈是:360度,而在數學上通常不用度數,而使用「弧度 radian」。360∘=2π radians
振幅=1
訊號頻率=3 Hz ,代表一秒鐘有 3 個週期。由於時間剛好介於一秒,因此會看到三個完整的正弦波
初始相位=0
角頻率=6π rad/s
t = 0~0.999 秒
而餘弦波也依樣畫葫蘆。
若固定在一個 3 Hz 正弦波,於不同取樣間隔下,離散取樣點會有什麼差異。
左側是用0.001間隔密度採樣。也就是在一秒鐘內對 3 Hz 正弦波取 1000 點。
右側則用0.01間隔密度採樣,取樣間隔變大了 10 倍。每秒只取 100 個樣本。
程式碼
import numpy as np import matplotlib.pyplot as plt n = np.arange(0, 1, 0.001) xn = np.sin(2*np.pi*3*n) plt.stem(n, xn) plt.title('Sampled sin wave') plt.xlabel('------>n') plt.ylabel('Amplitude') plt.show() n = np.arange(0, 1, 0.01) xn = np.sin(2*np.pi*3*n) plt.stem(n, xn) plt.title('Sampled sin wave') plt.xlabel('------>n') plt.ylabel('Amplitude') plt.show()
運行程式結果如下
留言
張貼留言