The Basics of Waves
2022/03/19
說明:
本文主要對弦波 [1] 進行 Matplotlib 存圖 [2] - [4] 與繪圖 [5] - [7] 的練習,以因應稍後 DFT(Discrete Fourier Transform)與 FFT(Fast Fourier Transform)的使用。
-----
https://pixabay.com/zh/photos/snake-python-serpent-scales-543243/
-----
◎ 問題:
-----
Q1:如何畫出一張波的圖形?
Fig. 1. wave_1 [1].
A1:參考代碼一到代碼三。
代碼一為 google drive 的設定 [2]。
代碼二主要為風格設定 [5]。
代碼三首先用 linspace 設定圖片 x 軸上的起始位置、終了位置、跟取樣點數。取樣點數若不足,弦波的圖就顯得粗糙而不平滑。
-----
代碼一:
from google.colab import drive drive.mount('/content/drive/') !ls '/content/drive/My Drive/'
-----
代碼二:
import matplotlib.pyplot as plt import numpy as np plt.style.use('classic') %matplotlib inline
-----
代碼三:
x = np.linspace(0, 10, 101) y = np.cos(x) plt.figure(figsize = (16, 8)) plt.plot(x, y, 'r') plt.ylabel('y = cos(x)') plt.xlabel('x') plt.savefig('/content/drive/My Drive/waves_1.png') # plt.show()
-----
Q2:如何畫出四張波的圖形?
Fig. 2. wave_2 [1].
A2:參考代碼四。此練習是為了同時展示多個弦波的時域與頻域的圖而預備。
多圖主要靠 subplot 的設定 [7]。上下兩張圖為(211)與(212),左右兩張圖為(121)與(122)。
-----
代碼四:
fig = plt.figure(figsize = (16,8)) times = np.arange(4) n = len(times) for t in times: plt.subplot(n/2, n/2, t+1) y = np.cos(x + t) plt.plot(x, y, 'r') plt.plot(x[35], y [35], 'bo') plt.ylim(-1.2, 1.2) plt.ylabel('y') plt.title(f't = {t}') plt.xlabel('location (x)') plt.tight_layout() plt.savefig('/content/drive/My Drive/waves_2.png') # plt.show()
-----
最後修改日期:2022/03/24。
-----
References
# 本篇 Python 範例來源
[1] The Basics of Waves — Python Numerical Methods
https://pythonnumericalmethods.berkeley.edu/notebooks/chapter24.01-The-Basics-of-waves.html
# 使用 Google Drive
[2] 玩具烏托邦: 貴哥的 colab 初學筆記
https://newtoypia.blogspot.com/2019/07/colab.html
# 存圖
[3] Python中讀取,顯示,儲存圖片的方法 - IT閱讀
https://www.itread01.com/content/1544534479.html
# 存圖
[4] 【Python】解決使用plt.savefig 保存圖片時一片空白_secsilm的博客-CSDN博客_plt savefig
https://blog.csdn.net/u010099080/article/details/52912439
# 風格
[5] 樣式美化matplotlib.pyplot.style.use定制畫布風格- 知乎
https://zhuanlan.zhihu.com/p/37891729
# %matplotlib inline
[6] Python繪圖問題:Matplotlib中%matplotlib inline是什麼、如何使用? _LthID的博客-CSDN博客_# %matplotlib inline
https://blog.csdn.net/liangzuojiayi/article/details/78183783
[7] subplot和subplots繪製子圖_lyzkks的博客-CSDN博客_subplot
https://blog.csdn.net/sinat_35930259/article/details/80002213
-----
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。