MATLAB 画出以下传递函数的伯德图

各参数我这边是有的 只是不知道要怎么去用代码去表达 请各位大佬慷慨解答 给个这样的例子就好 万分感谢

看看scipy库中的signal.lti()和signal.bode()等用法,给你一例子供学习借鉴。

import numpy as np
from scipy import signal
from matplotlib import pyplot as plt

# Coefficients in numerator of transfer function
num = [1]
# Coefficients in denominator of transfer function
# High order to low order, eg 1*s^2 + 0.1*s + 1
den = [1, 0.1, 1]

# Scan over zeta, a parameter for a second-order system
zetaRange = np.arange(0.1, 1.1, 0.1)

f1 = plt.figure()
for i in range(0, 9):
    den = [1, 2*zetaRange[i], 1]
    print (den)
    s1 = signal.lti(num, den)
    # Specify our own frequency range: np.arange(0.1, 5, 0.01)
    w, mag, phase = signal.bode(s1, np.arange(0.1, 5, 0.01).tolist())
    plt.semilogx(w, mag, color="blue", linewidth="1")
plt.xlabel("Frequency")
plt.ylabel("Magnitude")
plt.savefig("mag.png", dpi=300, format="png")

plt.figure()

for i in range(0, 9):
    den = [1, zetaRange[i], 1]
    s1 = signal.lti(num, den)
    w, mag, phase = signal.bode(s1, np.arange(0.1, 10, 0.02).tolist())
    plt.semilogx(w, phase, color="red", linewidth="1.1")
plt.xlabel("Frequency")
plt.ylabel("Amplitude")
plt.savefig("phase.png", dpi=300, format="png")
plt.show()

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y