欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python畫波特圖

呂致盈1年前8瀏覽0評論

Python是一種優(yōu)秀的編程語言,它有很多強大的庫和工具,可以方便地處理數(shù)據(jù)和繪制圖形。其中,matplotlib庫就是Python中非常流行的繪圖庫之一,可以繪制各種2D和3D圖形。在本篇文章中,我們將介紹如何使用Python繪制波特圖。

波特圖(Bode plot)是一種常見的頻率響應圖,通常用于描述線性時不變系統(tǒng)的振幅響應和相位響應。它的特點是橫坐標是角頻率,縱坐標是幅度比和相位角的對數(shù)。波特圖可以幫助我們了解系統(tǒng)的頻率特性,從而更好地設計和優(yōu)化控制系統(tǒng)。

import numpy as np
import matplotlib.pyplot as plt
# 定義系統(tǒng)函數(shù)
def H(s):
return 1 / (s**2 + 2*s + 1)
# 定義頻率范圍
w = np.logspace(-2, 2, 1000)
# 計算幅度響應和相位響應
mag = 20 * np.log10(np.abs(H(1j*w)))
phase = np.angle(H(1j*w))
# 繪制波特圖
fig, ax = plt.subplots()
ax.semilogx(w, mag, label='Magnitude')
ax.set_xlabel('Frequency (rad/s)')
ax.set_ylabel('Magnitude (dB)')
ax.set_ylim((-60, 20))
ax2 = ax.twinx()
ax2.semilogx(w, phase, 'r', label='Phase')
ax2.set_ylabel('Phase (rad)')
ax2.set_ylim((-3, 3))
ax.grid()
ax.legend(loc='upper right')
ax2.legend(loc='lower right')
plt.show()
在上面的代碼中,我們首先定義了系統(tǒng)函數(shù)H(s),然后使用numpy中的logspace函數(shù)創(chuàng)建了頻率范圍,使用H函數(shù)計算了幅度響應和相位響應,并使用matplotlib庫中的semilogx函數(shù)繪制了波特圖。其中,ax.twinx函數(shù)實現(xiàn)了雙坐標軸圖形,即在同一圖表中繪制幅度響應和相位響應。通過調整坐標軸的上下限和標簽,我們可以讓圖形更加美觀和易于觀察。

總之,Python可以方便地繪制波特圖,幫助我們更好地了解系統(tǒng)的頻率特性。希望本文能夠幫助你加深對波特圖的理解,同時也為你掌握Python繪圖技能提供一些有用的參考。