2022年5月10日 星期二

The Basics of Waves

 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

-----

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。