gpt4 book ai didi

python - 如何在Python中为RC电路创建传递函数

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:58 25 4
gpt4 key购买 nike

我对编程相当陌生,但这个问题在 python 和 excel 中也发生。

我使用以下公式来计算 RC 传递函数

s/(s+1) for High Pass

1/(s+1) for Low Pass

with s = jwRC

下面是我在python中使用的代码

from pylab import *
from numpy import *
from cmath import *

"""
Generating a transfer function for RC filters.
Importing modules for complex math and plotting.
"""

f = arange(1, 5000, 1)
w = 2.0j*pi*f
R=100
C=1E-5


hp_tf = (w*R*C)/(w*R*C+1) # High Pass Transfer function
lp_tf = 1/(w*R*C+1) # Low Pass Transfer function

plot(f, hp_tf) # plot high pass transfer function
plot(f, lp_tf, '-r') # plot low pass transfer function
xscale('log')

我还不能发布图片,所以我无法展示情节。但这里的问题是每个的截止频率都不同。它们应该在 y=0.707 处交叉,但实际上它们在大约 0.5 处交叉。

我发现我的公式或方法在某个地方是错误的,但我找不到错误,有人可以帮助我吗?

此外,在相关说明中,我尝试转换为 dB 刻度,但收到以下错误:

TypeError: only length-1 arrays can be converted to Python scalars

我正在使用以下内容

debl=20*log(hp_tf)

最佳答案

这是一个典型的例子,为什么你应该避免 pylab 以及更常见的表单导入

 from module import *

除非你确切地知道它的作用,因为它使 namespace 变得困惑。

使用,

import matplotlib.pyplot as plt
import numpy as np

然后调用np.logplt.plot等将解决您的问题。

<小时/>

进一步解释

这里发生的事情是这样的,

from pylab import *

numpy 定义一个对数组(您想要的)进行操作的 log 函数。

但是,后来的导入,

from cmath import *

用只接受标量的版本覆盖它,因此出现错误。

关于python - 如何在Python中为RC电路创建传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com