
一阶RC滤波器如图所示,电阻 R R R串联电容 C C C,输入电压记为 U i U_i Ui,输出电压记为 U o U_o Uo,电容容抗记为 X c = 1 j ω c X_c=\frac{1}{j\omega c} Xc=jωc1,
根据串联分压,列出传递函数,
H
(
j
ω
)
=
U
o
U
i
=
X
c
R
+
X
c
=
1
j
ω
c
R
+
1
j
ω
c
=
1
1
+
j
ω
R
C
H(j \omega)=\frac{U_o}{U_i}=\frac{X_c}{R+X_c}=\frac{\frac{1}{j\omega c}}{R+\frac{1}{j\omega c}}=\frac{1}{1+j\omega RC}
H(jω)=UiUo=R+XcXc=R+jωc1jωc1=1+jωRC1
复数为分母,实数为分子,不方便我们后续计算复向量的模,这里做一下简单的变换,给出变换的过程。
假设有复数
Z
=
a
+
b
j
Z=a+bj
Z=a+bj,则倒数为
1
Z
=
1
a
+
b
j
\frac{1}{Z}=\frac{1}{a+bj}
Z1=a+bj1,分子分母同乘以
a
−
b
j
a-bj
a−bj,即有,
1
Z
=
a
−
b
j
(
a
+
b
j
)
(
a
−
b
j
)
=
a
−
b
j
a
2
+
b
2
\frac{1}{Z}=\frac{a-bj}{(a+bj)(a-bj)}=\frac{a-bj}{a^2+b^2}
Z1=(a+bj)(a−bj)a−bj=a2+b2a−bj
带入可得,
H
(
j
ω
)
=
U
o
U
i
=
1
−
j
ω
R
C
1
+
(
ω
R
C
)
2
H(j \omega)=\frac{U_o}{U_i}=\frac{1-j\omega RC}{1+(\omega RC)^2}
H(jω)=UiUo=1+(ωRC)21−jωRC
计算该复数的模,则有,
∣
H
(
j
ω
)
∣
=
(
1
1
+
(
ω
R
C
)
2
)
2
+
(
ω
R
C
1
+
(
ω
R
C
)
2
)
2
=
1
1
+
(
ω
R
C
)
2
|H(j \omega)|=\sqrt{(\frac{1}{1+(\omega RC)^2})^2+(\frac{\omega RC}{1+(\omega RC)^2})^2}=\sqrt{\frac{1}{1+(\omega RC)^2}}
∣H(jω)∣=(1+(ωRC)21)2+(1+(ωRC)2ωRC)2=1+(ωRC)21
复数的模代表了电压增益,当电压增益下降到
2
2
\frac{\sqrt2}{2}
22倍时,此时的频率即为截止频率,记为
f
c
f_c
fc,那么就有,
∣
H
(
j
ω
)
∣
=
1
1
+
(
ω
R
C
)
2
=
2
2
|H(j \omega)|=\sqrt{\frac{1}{1+(\omega RC)^2}}=\frac{\sqrt2}{2}
∣H(jω)∣=1+(ωRC)21=22
化简可得,
ω
R
C
=
1
=
2
π
f
c
R
C
\omega RC=1=2\pi f_cRC
ωRC=1=2πfcRC
求得截止频率
f
c
f_c
fc,
f
c
=
1
2
π
R
C
f_c=\frac{1}{2\pi RC}
fc=2πRC1

二阶RC滤波器如图所示,可见由两个一阶电路构成。第一个一阶电路的电阻记为 R 1 R1 R1,电容记为 C 1 C1 C1;第二个一阶电路的电阻记为 R 2 R2 R2,电容记为 C 2 C2 C2,,输入电压记为 U i U_i Ui,输出电压记为 U o U_o Uo,电容容抗记为 X c = 1 j ω c X_c=\frac{1}{j\omega c} Xc=jωc1(这里便于分析,取电阻 R 1 = R 2 = R R1=R2=R R1=R2=R,电容 C 1 = C 2 = C C1=C2=C C1=C2=C)。
二阶电路的分析比一阶稍繁琐,不过原理还是一样,输出电压 U o U_o Uo即为电容 C 2 C2 C2上的压降,电容C2上的压降来自于电容 C 1 C1 C1上压降的分压。
梳理完电路结构,列出传递函数,
H
(
j
ω
)
=
U
o
U
i
=
X
c
/
/
(
R
+
X
c
)
R
+
X
c
/
/
(
R
+
X
c
)
X
c
R
+
X
c
H(j \omega)=\frac{U_o}{U_i}=\frac{X_c//(R+X_c)}{R+X_c//(R+X_c)}\frac{X_c}{R+X_c}
H(jω)=UiUo=R+Xc//(R+Xc)Xc//(R+Xc)R+XcXc
化简可得,
H
(
j
ω
)
=
j
ω
R
C
+
1
(
j
ω
R
C
)
2
+
3
j
ω
R
C
+
1
1
j
ω
R
C
+
1
=
1
1
−
(
ω
R
C
)
2
+
3
j
ω
R
C
H(j \omega)=\frac{j\omega RC+1}{(j\omega RC)^2+3j\omega RC+1}\frac{1}{j\omega RC+1}=\frac{1}{1-(\omega RC)^2+3j\omega RC}
H(jω)=(jωRC)2+3jωRC+1jωRC+1jωRC+11=1−(ωRC)2+3jωRC1
计算该复数的模,
∣
H
(
j
ω
)
∣
=
1
(
1
−
(
ω
R
C
)
2
)
2
+
9
(
ω
R
C
)
2
|H(j \omega)|=\sqrt{\frac{1}{(1-(\omega RC)^2)^2+9(\omega RC)^2}}
∣H(jω)∣=(1−(ωRC)2)2+9(ωRC)21
令
∣
H
(
j
ω
)
∣
=
2
2
|H(j \omega)|=\frac{\sqrt2}{2}
∣H(jω)∣=22,解得,
ω
=
1
2.672
R
C
\omega=\frac{1}{2.672RC}
ω=2.672RC1
求得截止频率
f
c
f_c
fc,
f
c
=
1
5.344
π
R
C
f_c=\frac{1}{5.344\pi RC}
fc=5.344πRC1
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
有没有一种有效的方法来做到这一点。我有一个数组a=[1,2,2,3,1,2]我想按升序输出出现的频率。示例[[3,1],[1,2],[2,3]]这是我的ruby代码。b=a.group_by{|x|x}out={}b.eachdo|k,v|out[k]=v.sizeendout.sort_by{|k,v|v} 最佳答案 a=[1,2,2,3,1,2]a.each_with_object(Hash.new(0)){|m,h|h[m]+=1}.sort_by{|k,v|v}#=>[[3,1],[1,2],[2,3]]
我正在使用最新版本的Rails,启动一个我将在3.1发布后部署的新应用程序,但我无法让omniauth工作。如果我只是将omniauth添加到我的Gemfile,它会bundle起来,但是当我运行rake、railss或几乎所有命令时,它会出错:nosuchfiletoload--omniauth/password有什么想法吗?是否有适用于Rails3.1的分支或分支?还是只有我遇到这个问题? 最佳答案 实际问题是bundler选择了旧版本的omniauth。为了帮助bundler选择正确的版本,请使用:gem'omniauth',
我有一个嵌套的数字数组,排列如下:ids=[[5,8,10],[8,7,25],[15,30,32],[10,8,7]]我只需要一个包含所有键的数组,无需重复,所以我使用了这个:ids=ids.flatten.uniq产生这个:ids=[5,8,10,7,25,15,30,32]由于我使用了.uniq,它消除了重复值。但是,我想根据它们在子数组中出现的频率来对值进行排序,而不是它们碰巧处于的顺序——所以像这样:ids=[8,10,7,5,25,15,30,32] 最佳答案 应该这样做:ids.flatten.group_by{|i|
我正在为包含自己的测试套件的C库创建Homebrew公式。作为公式的testblock的一部分,我想运行下载文件中包含的测试。测试作为make目标运行(maketest)。但是,Homebrewtestblock在它们自己的临时目录中运行,下载的文件不在路径中。也就是说,以下内容不起作用,因为它找不到文件:testdosystem"make","test"end如何访问文件最初下载和解压的位置?我无法在文档中找到有关该内容的任何信息。或者在这种情况下是否有更好的Homebrew测试解决方案? 最佳答案 testdoblock旨在测试
我想自动化这个场景。用户A将一个项目分配给用户B,用户B收到一条警告消息。为此,我想用不同的帐户启动两个不同的浏览器来测试这种交互。有可能这样做吗?如果是,如何? 最佳答案 看起来这个问题已经在我的示例代码中得到了回答:http://stackoverflow.com/questions/213430/selenium-rc-run-tests-in-multiple-browsers-automatically。firefox=Selenium::SeleniumDriver.new("localhost",4444,'*fire
所以,我已经开始创建一些使用SeleniumRC的Ruby单元测试。直接在浏览器中测试我的网络应用程序。我正在使用Selenum-Client对于ruby。我已经为所有其他selenium测试创建了一个基类来继承。这会创建许多SeleniumDriver实例,并且会在每个实例上调用所有缺少的方法。这实质上是并行运行测试。其他人是如何实现自动化的?这是我的实现:classSeleniumTest这行得通,但如果一个浏览器失败,整个测试就会失败,并且无法知道它在哪个浏览器上失败。 最佳答案 你试过了吗SeleniumGrid?我认为它创
如何切换回来?我安装了RVM,然后安装了Ruby1.9.3,然后运行geminstallrails。运行rails-v我可以看到我有Rails4.0.0.rc1但我不想使用该版本,因为我的主机不支持它供应商。如何安装Rails3.2.13并在运行railsnew命令时将其用作默认值? 最佳答案 尝试:gemuninstallrailsgeminstallrails--version"=3.2.13" 关于ruby-on-rails-使用geminstallrails,现在我有4.0.
我有一个数组[1,2,4,5,4,7],我想找到每个数字的频率并将其存储在哈希中。我有这段代码,但它返回NoMethodError:undefinedmethod'+'fornil:NilClassdefscore(array)hash={}array.each{|key|hash[key]+=1}end期望的输出是{1=>1,2=>1,4=>2,5=>1,7=>1} 最佳答案 在Ruby2.4+中:defscore(array)array.group_by(&:itself).transform_values!(&:size)en
示例输入:"Iwas09809home--Yes!yes!Youwas"和输出:{'yes'=>2,'was'=>2,'i'=>1,'home'=>1,'you'=>1}我的代码不起作用:defget_words_f(myStr)myStr=myStr.downcase.scan(/\w/).to_s;h=Hash.new(0)myStr.split.eachdo|w|h[w]+=1endreturnh.to_a;endprintget_words_f('Iwas09809home--Yes!yes!Youwas'); 最佳答案 这