FOC——Butterworth (巴特沃斯)数字滤波器(2025.03.18)
参考链接1: [DSP] Butterworth (巴特沃斯)数字滤波器设计参考
参考链接2: 陈佩青《数字信号处理教程》
参考链接3: ButterWorthFIlter(巴特沃斯滤波器)
在此感谢各位前辈大佬的总结,写这个只是为了记录学习大佬资料的过程,内容基本都是搬运的大佬博客,觉着有用自己搞过来自己记一下,如果有大佬觉着我搬过来不好,联系我删。
FOC——Butterworth (巴特沃斯)数字滤波器(2025.03.18)
- 1、什么是Butterworth (巴特沃斯)数字滤波器?
- 2、滤波器设计
- 2.1、低通滤波器
- 2.1.1 1阶Butterworth LPF设计
- 2.1.1.1 1阶Butterworth LPF设计举例
- 2.1.1.2 1阶Butterworth LPF设计Matlab验证
- 2.1.2 2阶Butterworth LPF设计
- 2.1.2.1 2阶Butterworth LPF设计举例
- 2.1.2.2 2阶Butterworth LPF设计Matlab验证
- 2.2、高通滤波器
- 2.2.1 1阶Butterworth HPF设计
- 2.2.1.1 1阶Butterworth HPF设计举例
- 2.2.1.2 1阶Butterworth HPF设计Matlab验证
- 2.2.2 2阶Butterworth HPF设计
- 2.2.2.1 2阶Butterworth HPF设计举例
- 2.2.2.2 2阶Butterworth HPF设计Matlab验证
- 2.3、带通滤波器
- 2.3.1 2阶Butterworth 带通滤波器设计
- 2.3.1.1 2阶Butterworth 带通滤波器设计举例
- 2.3.1.2 2阶Butterworth 带通滤波器设计Matlab验证
- 2.3.2 2阶Butterworth 带通滤波器设计(仅个人推测,应该是错的)
- 2.3.2.1 2阶Butterworth 带通滤波器设计举例(仅个人推测,应该是错的)
- 2.3.2.2 2阶Butterworth 带通滤波器设计Matlab验证
- 2.4、带阻滤波器(待推算完善)
- 2.4.1 2阶Butterworth 带阻滤波器设计(待推算完善)
- 2.4.1.1 2阶Butterworth 带阻滤波器设计举例(待推算完善)
- 2.4.2.2 2阶Butterworth 带阻滤波器设计Matlab验证
1、什么是Butterworth (巴特沃斯)数字滤波器?
在嵌入式音频产品开发过程中经常会到LPF(Low Pass Filter 低通滤波器)和HPF(High Pass Filter 高通滤波器),一般情况下都是离线用工具(如: Matlab)设计好滤波器的参数(Filter Coefficients)再应用到产品中去。但有些状况下需要用户自己根据需求来实时(Real-time)调整Filter Frequency Response (滤波器频率响应),这种情形下就需要在嵌入式系统中实时根据客户的设定需求来产生相应的Filter Coefficients。
巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。 在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。二阶巴特沃斯滤波器的衰减率为每倍频12分贝、三阶巴特沃斯滤波器的衰减率为每倍频18分贝、如此类推。巴特沃斯滤波器的振幅对角频率单调下降,并且也是唯一的无论阶数,振幅对角频率曲线都保持同样的形状的滤波器。只不过滤波器阶数越高,在阻频带振幅衰减速度越快。其他滤波器高阶的振幅对角频率图和低阶数的振幅对角频率有不同的形状。
由图可见,当N趋于无穷时,将会得到一个理想的低通滤波器。
归一化原型(低通)系统函数的一般形式是:
H a n ( s ) = d 0 a 0 + a 1 ∗ s 1 + a 2 ∗ s 2 + . . . + a N ∗ s N H_{an}(s)=\frac{d_0}{a_0+a_1*s^1+a_2*s^2+...+a_N*s^N} Han(s)=a0+a1∗s1+a2∗s2+...+aN∗sNd0一般情况下希望保持通带增益为0dB,因此上式中的 d 0 = a 0 d_0=a_0 d0=a0。
对于上式,当 a 0 = a N = 1 a_0=a_N=1 a0=aN=1情况下可得到归一化的巴特沃斯多项式(分母部分):
n=1时—— H a n ( s ) = s + 1 H_{an}(s)=s+1 Han(s)=s+1
n=2时—— H a n ( s ) = s 2 + 1.414 s + 1 H_{an}(s)=s^2+1.414s+1 Han(s)=s2+1.414s+1
n=3时—— H a n ( s ) = ( s + 1 )( s 2 + s + 1 ) H_{an}(s)=(s+1)(s^2+s+1) Han(s)=(s+1)(s2+s+1)
n=4时—— H a n ( s ) = ( s 2 + 0.7654 s + 1 )( s 2 + 1.8478 s + 1 ) H_{an}(s)=(s^2+0.7654s+1)(s^2+1.8478s+1) Han(s)=(s2+0.7654s+1)(s2+1.8478s+1)
n=5时—— H a n ( s ) = ( s + 1 )( s 2 + 0.6180 s + 1 )( s 2 + 1.6180 s + 1 ) H_{an}(s)=(s+1)(s^2+0.6180s+1)(s^2+1.6180s+1) Han(s)=(s+1)(s2+0.6180s+1)(s2+1.6180s+1)
n=6时—— H a n ( s ) = ( s 2 + 0.5176 s + 1 )( s 2 + 1.414 s + 1 )( s 2 + 1.9318 s + 1 ) H_{an}(s)=(s^2+0.5176s+1)(s^2+1.414s+1)(s^2+1.9318s+1) Han(s)=(s2+0.5176s+1)(s2+1.414s+1)(s2+1.9318s+1)
n=7时—— H a n ( s ) = ( s + 1 )( s 2 + 0.4450 s + 1 )( s 2 + 1.247 s + 1 )( s 2 + 1.8022 s + 1 ) H_{an}(s)=(s+1)(s^2+0.4450s+1)(s^2+1.247s+1)(s^2+1.8022s+1) Han(s)=(s+1)(s2+0.4450s+1)(s2+1.247s+1)(s2+1.8022s+1)
n=8时—— H a n ( s ) = ( s 2 + 0.3986 s + 1 )( s 2 + 1.111 s + 1 )( s 2 + 1.6630 s + 1 )( s 2 + 1.9622 s + 1 ) H_{an}(s)=(s^2+0.3986s+1)(s^2+1.111s+1)(s^2+1.6630s+1)(s^2+1.9622s+1) Han(s)=(s2+0.3986s+1)(s2+1.111s+1)(s2+1.6630s+1)(s2+1.9622s+1)
由此可以得到 d 0 = a 0 = a N = 1 d_0=a_0=a_N=1 d0=a0=aN=1时的巴特沃斯多项式展开的系数表(陈佩青《数字信号处理教程》第二版266页 表6-4):
上面的表达式是s域的表达式。
下面是变化到z域的方法。
2、滤波器设计
2.1、低通滤波器
s = 1 C 1 ∗ 1 − z − 1 1 + z − 1 s=\frac{1}{C_1}*\frac{1-z^{-1}}{1+z^{-1}} s=C11∗1+z−11−z−1 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω Ω c = 1 Ω_c=1 Ωc=1 ω c = 2 π f c f s ω_c=\frac{2πf_c}{f_s} ωc=fs2πfc
其中为 f s f_s fs采样频率, f c f_c fc为-3dB频率点
2.1.1 1阶Butterworth LPF设计
H ( s ) = 1 s + 1 H(s)=\frac{1}{s+1} H(s)=s+11将 s = 1 C 1 ∗ 1 − z − 1 1 + z − 1 s=\frac{1}{C_1}*\frac{1-z^{-1}}{1+z^{-1}} s=C11∗1+z−11−z−1代入上式可得:
H ( z ) = 1 1 C 1 ∗ 1 − z − 1 1 + z − 1 + 1 = C 1 + C 1 z − 1 1 − z − 1 + C 1 + C 1 z − 1 = C 1 + C 1 z − 1 ( 1 + C 1 ) + ( C 1 − 1 ) z − 1 = C 1 ( C 1 + 1 ) + C 1 ( C 1 + 1 ) z − 1 1 + C 1 − 1 C 1 + 1 z − 1 \begin{aligned} H(z)=\frac{1}{\frac{1}{C_1}*\frac{1-z^{-1}}{1+z^{-1}}+1}=\frac{C_1+C_1z^{-1}}{1-z^{-1}+C_1+C_1z^{-1}} & =\frac{C_1+C_1z^{-1}}{(1+C_1)+(C_1-1)z^{-1}}\\ & =\frac{\frac{C_1}{(C_1+1)}+\frac{C_1}{(C_1+1)}z^{-1}}{1+\frac{C_1-1}{C_1+1}z^{-1}} \end{aligned} H(z)=C11∗1+z−11−z−1+11=1−z−1+C1+C1z−1C1+C1z−1=(1+C1)+(C1−1)z−1C1+C1z−1=1+C1+1C1−1z−1(C1+1)C1+(C1+1)C1z−1
由上式可得 B 0 = B 1 = C 1 C 1 + 1 , B 2 = 0 , A 0 = 1 , A 1 = C 1 C 1 + 1 , A 2 = 0 B_0=B_1=\frac{C_1}{C_1+1},B_2=0,A_0=1,A_1=\frac{C_1}{C_1+1},A_2=0 B0=B1=C1+1C1,B2=0,A0=1,A1=C1+1C1,A2=0。
2.1.1.1 1阶Butterworth LPF设计举例
设定fs=44100Hz, fc=1000Hz 计算1阶Butterworth LPF filter coefficients
因为归一化所以 Ω c = 1 Ω_c=1 Ωc=1,所以代入 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω可得:
C 1 = 1 ∗ t a n 2 ∗ π ∗ f c f s 2 = 1 ∗ t a n 2 ∗ π ∗ 1000 44100 2 = 0.071358 C_1=1*tan\frac{\frac{2*π*f_c}{f_s}}{2}=1*tan\frac{\frac{2*π*1000}{44100}}{2}=0.071358 C1=1∗tan2fs2∗π∗fc=1∗tan2441002∗π∗1000=0.071358代入 B 0 = B 1 = C 1 C 1 + 1 , B 2 = 0 , A 0 = 1 , A 1 = C 1 C 1 + 1 , A 2 = 0 B_0=B_1=\frac{C_1}{C_1+1},B_2=0,A_0=1,A_1=\frac{C_1}{C_1+1},A_2=0 B0=B1=C1+1C1,B2=0,A0=1,A1=C1+1C1,A2=0可求出:
B 0 = B 1 = C 1 C 1 + 1 = 0.06660578 B_0=B_1=\frac{C_1}{C_1+1}=0.06660578 B0=B1=C1+1C1=0.06660578 B 2 = 0 B_2=0 B2=0 A 0 = 1 A_0=1 A0=1 A 1 = C 1 C 1 + 1 = − 0.866788439 A_1=\frac{C_1}{C_1+1}=-0.866788439 A1=C1+1C1=−0.866788439 A 2 = 0 A_2=0 A2=0
2.1.1.2 1阶Butterworth LPF设计Matlab验证
2.1.2 2阶Butterworth LPF设计
H ( s ) = 1 1 + 1.414 s + s 2 H(s)=\frac{1}{1+1.414s+s^2} H(s)=1+1.414s+s21将 s = 1 C 1 ∗ 1 − z − 1 1 + z − 1 s=\frac{1}{C_1}*\frac{1-z^{-1}}{1+z^{-1}} s=C11∗1+z−11−z−1代入上式可得:
H ( z ) = C 1 2 + 2 C 1 2 z − 1 + C 1 2 z − 2 ( C 1 2 + 1.414 C 1 + 1 ) + ( 2 C 1 2 − 2 ) z − 1 + ( C 1 2 − 1.414 C 1 + 1 ) z − 1 \begin{aligned} H(z)=\frac{C_1^2+2C_1^2z^{-1}+C_1^2z^{-2}}{(C_1^2+1.414C_1+1)+(2C_1^2-2)z^{-1}+(C_1^2-1.414C_1+1)z^{-1}} \end{aligned} H(z)=(C12+1.414C1+1)+(2C12−2)z−1+(C12−1.414C1+1)z−1C12+2C12z−1+C12z−2
令 G = 1 C 1 2 + 1.414 C 1 + 1 ,其中 C 1 = t a n ω c 2 , ω c = 2 π f c f s G=\frac{1}{C_1^2+1.414C_1+1},其中C_1=tan\frac{ω_c}{2},ω_c=\frac{2πf_c}{f_s} G=C12+1.414C1+11,其中C1=tan2ωc,ωc=fs2πfc。
可得: B 0 = G C 1 2 , B 1 = 2 B 0 , B 2 = B 0 , A 0 = 1 , A 1 = G ( 2 C 1 2 − 2 ) , A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) B_0=GC_1^2,B_1=2B_0,B_2=B_0,A_0=1,A_1=G(2C_1^2-2),A_2=G(C_1^2-1.414C_1+1) B0=GC12,B1=2B0,B2=B0,A0=1,A1=G(2C12−2),A2=G(C12−1.414C1+1)。
2.1.2.1 2阶Butterworth LPF设计举例
设定fs=44100Hz, fc=1000Hz 计算2阶Butterworth LPF filter coefficients
因为归一化所以 Ω c = 1 Ω_c=1 Ωc=1,所以代入 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω可得:
C 1 = 1 ∗ t a n 2 ∗ π ∗ f c f s 2 = 1 ∗ t a n 2 ∗ π ∗ 1000 44100 2 = 0.071358 C_1=1*tan\frac{\frac{2*π*f_c}{f_s}}{2}=1*tan\frac{\frac{2*π*1000}{44100}}{2}=0.071358 C1=1∗tan2fs2∗π∗fc=1∗tan2441002∗π∗1000=0.071358 G = 1 C 1 2 + 1.414 C 1 + 1 = 1 0.07135 8 2 + 1.414 ∗ 0.071358 + 1 = 0.90415 G=\frac{1}{C_1^2+1.414C_1+1}=\frac{1}{0.071358^2+1.414*0.071358+1}=0.90415 G=C12+1.414C1+11=0.0713582+1.414∗0.071358+11=0.90415代入 B 0 = G C 1 2 , B 1 = 2 B 0 , B 2 = B 0 , A 0 = 1 , A 1 = G ( 2 C 1 2 − 2 ) , A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) B_0=GC_1^2,B_1=2B_0,B_2=B_0,A_0=1,A_1=G(2C_1^2-2),A_2=G(C_1^2-1.414C_1+1) B0=GC12,B1=2B0,B2=B0,A0=1,A1=G(2C12−2),A2=G(C12−1.414C1+1)可求出:
B 0 = G C 1 2 = 0.90415 ∗ 0.07135 8 2 = 0.004603998476 B_0=GC_1^2=0.90415*0.071358^2=0.004603998476 B0=GC12=0.90415∗0.0713582=0.004603998476 B 1 = 2 B 0 = 2 ∗ 0.004603998476 = 0.009207996951 B_1=2B_0=2*0.004603998476=0.009207996951 B1=2B0=2∗0.004603998476=0.009207996951 B 2 = B 0 = 0.004603998476 B_2=B_0=0.004603998476 B2=B0=0.004603998476 A 0 = 1 A_0=1 A0=1 A 1 = G ( 2 C 1 2 − 2 ) = 0.90415 ∗ ( 2 ∗ 0.07135 8 2 − 2 ) = − 1.799096409760 A_1=G(2C_1^2-2)=0.90415*(2*0.071358^2-2)=-1.799096409760 A1=G(2C12−2)=0.90415∗(2∗0.0713582−2)=−1.799096409760 A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) = 0.90415 ∗ ( 0.07135 8 2 − 1.414 ∗ 0.071358 + 1 = 0.817512403663 ) A_2=G(C_1^2-1.414C_1+1)=0.90415*(0.071358^2-1.414*0.071358+1=0.817512403663) A2=G(C12−1.414C1+1)=0.90415∗(0.0713582−1.414∗0.071358+1=0.817512403663)
2.1.2.2 2阶Butterworth LPF设计Matlab验证
2.2、高通滤波器
s = C 1 ∗ 1 + z − 1 1 − z − 1 s={C_1}*\frac{1+z^{-1}}{1-z^{-1}} s=C1∗1−z−11+z−1 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω Ω c = 1 Ω_c=1 Ωc=1
2.2.1 1阶Butterworth HPF设计
H ( s ) = 1 s + 1 H(s)=\frac{1}{s+1} H(s)=s+11将 s = C 1 ∗ 1 + z − 1 1 − z − 1 s=C_1*\frac{1+z^{-1}}{1-z^{-1}} s=C1∗1−z−11+z−1代入上式可得:
H ( z ) = 1 − z − 1 ( C 1 + 1 ) + ( C 1 − 1 ) z − 1 \begin{aligned} H(z)=\frac{1-z^{-1}}{(C_1+1)+(C_1-1)z^{-1}} \end{aligned} H(z)=(C1+1)+(C1−1)z−11−z−1
令 G = 1 C 1 + 1 ,其中 C 1 = t a n ω c 2 , ω c = 2 π f c f s G=\frac{1}{C_1+1},其中C_1=tan\frac{ω_c}{2},ω_c=\frac{2πf_c}{f_s} G=C1+11,其中C1=tan2ωc,ωc=fs2πfc。
可得: B 0 = G , B 1 = − B 0 , B 2 = 0 , A 0 = 1 , A 1 = G ( C 1 − 1 ) , A 2 = 0 B_0=G,B_1=-B_0,B_2=0,A_0=1,A_1=G(C_1-1),A_2=0 B0=G,B1=−B0,B2=0,A0=1,A1=G(C1−1),A2=0。
2.2.1.1 1阶Butterworth HPF设计举例
设定fs=44100Hz, fc=1000Hz 计算1阶Butterworth HPF filter coefficients
因为归一化所以 Ω c = 1 Ω_c=1 Ωc=1,所以代入 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω可得:
C 1 = 1 ∗ t a n 2 ∗ π ∗ f c f s 2 = 1 ∗ t a n 2 ∗ π ∗ 1000 44100 2 = 0.071358 C_1=1*tan\frac{\frac{2*π*f_c}{f_s}}{2}=1*tan\frac{\frac{2*π*1000}{44100}}{2}=0.071358 C1=1∗tan2fs2∗π∗fc=1∗tan2441002∗π∗1000=0.071358 G = 1 C 1 + 1 = G = 1 0.071358 + 1 = 0.93339421975 G=\frac{1}{C_1+1}=G=\frac{1}{0.071358+1}=0.93339421975 G=C1+11=G=0.071358+11=0.93339421975代入 B 0 = G , B 1 = − B 0 , B 2 = 0 , A 0 = 1 , A 1 = G ( C 1 − 1 ) , A 2 = 0 B_0=G,B_1=-B_0,B_2=0,A_0=1,A_1=G(C_1-1),A_2=0 B0=G,B1=−B0,B2=0,A0=1,A1=G(C1−1),A2=0可求出:
B 0 = G = 0.93339421975 B_0=G=0.93339421975 B0=G=0.93339421975 B 1 = − B 0 = − 0.93339421975 B_1=-B_0=-0.93339421975 B1=−B0=−0.93339421975 B 2 = 0 B_2=0 B2=0 A 0 = 1 A_0=1 A0=1 A 1 = G ( C 1 − 1 ) = 0.93339421975 ∗ ( 0.071358 − 1 ) = − 0.866788439500 A_1=G(C_1-1)=0.93339421975*(0.071358-1)=-0.866788439500 A1=G(C1−1)=0.93339421975∗(0.071358−1)=−0.866788439500 A 2 = 0 A_2=0 A2=0。
2.2.1.2 1阶Butterworth HPF设计Matlab验证
2.2.2 2阶Butterworth HPF设计
H ( s ) = 1 1 + 1.414 s + s 2 H(s)=\frac{1}{1+1.414s+s^2} H(s)=1+1.414s+s21将 s = C 1 ∗ 1 + z − 1 1 − z − 1 s=C_1*\frac{1+z^{-1}}{1-z^{-1}} s=C1∗1−z−11+z−1代入上式可得:
H ( z ) = 1 − 2 z − 1 + z − 2 ( C 1 2 + 1.414 C 1 + 1 ) + ( 2 C 1 2 − 2 ) z − 1 + ( C 1 2 − 1.414 C 1 + 1 ) z − 1 \begin{aligned} H(z)=\frac{1-2z^{-1}+z^{-2}}{(C_1^2+1.414C_1+1)+(2C_1^2-2)z^{-1}+(C_1^2-1.414C_1+1)z^{-1}} \end{aligned} H(z)=(C12+1.414C1+1)+(2C12−2)z−1+(C12−1.414C1+1)z−11−2z−1+z−2
令 G = 1 C 1 2 + 1.414 C 1 + 1 ,其中 C 1 = t a n ω c 2 , ω c = 2 π f c f s G=\frac{1}{C_1^2+1.414C_1+1},其中C_1=tan\frac{ω_c}{2},ω_c=\frac{2πf_c}{f_s} G=C12+1.414C1+11,其中C1=tan2ωc,ωc=fs2πfc。
可得: B 0 = G , B 1 = − 2 G , B 2 = G , A 0 = 1 , A 1 = G ( 2 C 1 2 − 2 ) , A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) B_0=G,B_1=-2G,B_2=G,A_0=1,A_1=G(2C_1^2-2),A_2=G(C_1^2-1.414C_1+1) B0=G,B1=−2G,B2=G,A0=1,A1=G(2C12−2),A2=G(C12−1.414C1+1)。
2.2.2.1 2阶Butterworth HPF设计举例
设定fs=44100Hz, fc=1000Hz 计算2阶Butterworth HPF filter coefficients
因为归一化所以 Ω c = 1 Ω_c=1 Ωc=1,所以代入 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω可得:
C 1 = 1 ∗ t a n 2 ∗ π ∗ f c f s 2 = 1 ∗ t a n 2 ∗ π ∗ 1000 44100 2 = 0.071358 C_1=1*tan\frac{\frac{2*π*f_c}{f_s}}{2}=1*tan\frac{\frac{2*π*1000}{44100}}{2}=0.071358 C1=1∗tan2fs2∗π∗fc=1∗tan2441002∗π∗1000=0.071358 G = 1 C 1 2 + 1.414 C 1 + 1 = 1 0.07135 8 2 + 1.414 ∗ 0.071358 + 1 = 0.904152203356 G=\frac{1}{C_1^2+1.414C_1+1}=\frac{1}{0.071358^2+1.414*0.071358+1}=0.904152203356 G=C12+1.414C1+11=0.0713582+1.414∗0.071358+11=0.904152203356代入 B 0 = G , B 1 = − 2 G , B 2 = G , A 0 = 1 , A 1 = G ( 2 C 1 2 − 2 ) , A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) B_0=G,B_1=-2G,B_2=G,A_0=1,A_1=G(2C_1^2-2),A_2=G(C_1^2-1.414C_1+1) B0=G,B1=−2G,B2=G,A0=1,A1=G(2C12−2),A2=G(C12−1.414C1+1)可求出:
B 0 = G = 0.904152203356 B_0=G=0.904152203356 B0=G=0.904152203356 B 1 = − 2 G = − 1.808304406712 B_1=-2G=-1.808304406712 B1=−2G=−1.808304406712 B 2 = G = 0.904152203356 B_2=G=0.904152203356 B2=G=0.904152203356 A 0 = 1 A_0=1 A0=1 A 1 = G ( 2 C 1 2 − 2 ) = 0.904152203356 ∗ ( 2 ∗ 0.07135 8 2 − 2 ) = − 1.799096409760 A_1=G(2C_1^2-2)=0.904152203356*(2*0.071358^2-2)=-1.799096409760 A1=G(2C12−2)=0.904152203356∗(2∗0.0713582−2)=−1.799096409760 A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) = 0.904152203356 ∗ ( 0.07135 8 2 − 1.414 ∗ 0.071358 + 1 ) = 0.817510981662 A_2=G(C_1^2-1.414C_1+1)=0.904152203356*(0.071358^2-1.414*0.071358+1)=0.817510981662 A2=G(C12−1.414C1+1)=0.904152203356∗(0.0713582−1.414∗0.071358+1)=0.817510981662。
2.2.2.2 2阶Butterworth HPF设计Matlab验证
2.3、带通滤波器
s = D ∗ 1 − E z − 1 + z − 2 1 + z − 2 s=D*\frac{1-Ez^{-1}+z^{-2}}{1+z^{-2}} s=D∗1+z−21−Ez−1+z−2 Ω c = D ∗ c o s ω 0 − c o s ω s i n ω Ω_c=D*\frac{cosω_0-cosω}{sinω} Ωc=D∗sinωcosω0−cosω其中 D = Ω ∗ c o t ( ω 2 − ω 1 2 ) D=Ω*cot(\frac{ω_2-ω_1}{2}) D=Ω∗cot(2ω2−ω1) E = 2 c o s ( ω 2 + ω 1 2 ) c o s ( ω 2 − ω 1 2 ) = 2 c o s ω 0 E=\frac{2cos(\frac{ω_2+ω_1}{2})}{cos(\frac{ω_2-ω_1}{2})}=2cosω_0 E=cos(2ω2−ω1)2cos(2ω2+ω1)=2cosω0
2.3.1 2阶Butterworth 带通滤波器设计
H ( s ) = 1 s + 1 (这里没搞懂为啥用 1 阶的表达式计算,但是能跟 m a t l a b 结果对得上,存疑!) H(s)=\frac{1}{s+1}(这里没搞懂为啥用1阶的表达式计算,但是能跟matlab结果对得上,存疑!) H(s)=s+11(这里没搞懂为啥用1阶的表达式计算,但是能跟matlab结果对得上,存疑!)将 s = D ∗ 1 − E z − 1 + z − 2 1 + z − 2 s=D*\frac{1-Ez^{-1}+z^{-2}}{1+z^{-2}} s=D∗1+z−21−Ez−1+z−2代入上式可得:
H ( z ) = 1 − z − 2 ( 1 + D ) − D E z − 1 + ( D − 1 ) z − 2 \begin{aligned} H(z)=\frac{1-z^{-2}}{(1+D)-DEz^{-1}+(D-1)z^{-2}} \end{aligned} H(z)=(1+D)−DEz−1+(D−1)z−21−z−2
令 G = 1 1 + D ,其中 D = Ω ∗ c o t ( ω 2 − ω 1 2 ) , E = 2 c o s ( ω 2 + ω 1 2 ) c o s ( ω 2 − ω 1 2 ) = 2 c o s ω 0 G=\frac{1}{1+D},其中D=Ω*cot(\frac{ω_2-ω_1}{2}),E=\frac{2cos(\frac{ω_2+ω_1}{2})}{cos(\frac{ω_2-ω_1}{2})}=2cosω_0 G=1+D1,其中D=Ω∗cot(2ω2−ω1),E=cos(2ω2−ω1)2cos(2ω2+ω1)=2cosω0。
可得: B 0 = G , B 1 = 0 , B 2 = − G , A 0 = 1 , A 1 = − G D E , A 2 = G ( D − 1 ) B_0=G,B_1=0,B_2=-G,A_0=1,A_1=-GDE,A_2=G(D-1) B0=G,B1=0,B2=−G,A0=1,A1=−GDE,A2=G(D−1)。
2.3.1.1 2阶Butterworth 带通滤波器设计举例
设定fs=44100Hz, f1=300Hz, f2=350Hz 计算2阶Butterworth 带通滤波器
因为归一化所以 Ω c = 1 Ω_c=1 Ωc=1,所以代入 D = Ω ∗ c o t ( ω 2 − ω 1 2 ) D=Ω*cot(\frac{ω_2-ω_1}{2}) D=Ω∗cot(2ω2−ω1),其中 w 1 = 2 π f 1 f s w_1=\frac{2πf_1}{fs} w1=fs2πf1, w 2 = 2 π f 2 f s w_2=\frac{2πf_2}{fs} w2=fs2πf2可得:
w 1 = 2 π f 1 f s = 2 π ∗ 300 44100 = 0.042742757 w_1=\frac{2πf_1}{fs}=\frac{2π*300}{44100}=0.042742757 w1=fs2πf1=441002π∗300=0.042742757 w 2 = 2 π f 2 f s = 2 π ∗ 350 44100 = 0.04986655 w_2=\frac{2πf_2}{fs}=\frac{2π*350}{44100}=0.04986655 w2=fs2πf2=441002π∗350=0.04986655 D = Ω ∗ c o t ( ω 2 − ω 1 2 ) = 1 ∗ c o t ( 0.04986655 − 0.042742757 2 ) = 280.7481323 D=Ω*cot(\frac{ω_2-ω_1}{2})=1*cot(\frac{0.04986655-0.042742757}{2})=280.7481323 D=Ω∗cot(2ω2−ω1)=1∗cot(20.04986655−0.042742757)=280.7481323 G = 1 D + 1 = 1 280.7481323 + 1 = 0.003549269 G=\frac{1}{D+1}=\frac{1}{280.7481323+1}=0.003549269 G=D+11=280.7481323+11=0.003549269 E = 2 c o s ( ω 2 + ω 1 2 ) c o s ( ω 2 − ω 1 2 ) = 2 c o s ( 0.04986655 + 0.042742757 2 ) c o s ( 0.04986655 − 0.042742757 2 ) = 1.997868936 = 2 c o s ω 0 E=\frac{2cos(\frac{ω_2+ω_1}{2})}{cos(\frac{ω_2-ω_1}{2})}=\frac{2cos(\frac{0.04986655+0.042742757}{2})}{cos(\frac{0.04986655-0.042742757}{2})}=1.997868936=2cosω_0 E=cos(2ω2−ω1)2cos(2ω2+ω1)=cos(20.04986655−0.042742757)2cos(20.04986655+0.042742757)=1.997868936=2cosω0代入 B 0 = G , B 1 = 0 , B 2 = − G , A 0 = 1 , A 1 = − G D E , A 2 = G ( D − 1 ) B_0=G,B_1=0,B_2=-G,A_0=1,A_1=-GDE,A_2=G(D-1) B0=G,B1=0,B2=−G,A0=1,A1=−GDE,A2=G(D−1)可求出:
B 0 = G = 0.003549269 B_0=G=0.003549269 B0=G=0.003549269 B 1 = 0 B_1=0 B1=0 B 2 = − G = − 0.003549269 B_2=-G=-0.003549269 B2=−G=−0.003549269 A 0 = 1 A_0=1 A0=1 A 1 = − G D E = − 0.003549269 ∗ 280.7481323 ∗ 1.997868936 = − 1.990777961 A_1=-GDE=-0.003549269*280.7481323*1.997868936=-1.990777961 A1=−GDE=−0.003549269∗280.7481323∗1.997868936=−1.990777961 A 2 = G ( D − 1 ) = 0.003549269 ∗ ( 280.7481323 − 1 ) = 0.992901461 A_2=G(D-1)=0.003549269*(280.7481323-1)=0.992901461 A2=G(D−1)=0.003549269∗(280.7481323−1)=0.992901461。
2.3.1.2 2阶Butterworth 带通滤波器设计Matlab验证
2.3.2 2阶Butterworth 带通滤波器设计(仅个人推测,应该是错的)
H ( s ) = 1 1 + 1.414 s + s 2 H(s)=\frac{1}{1+1.414s+s^2} H(s)=1+1.414s+s21将 s = D ∗ 1 − E z − 1 + z − 2 1 + z − 2 s=D*\frac{1-Ez^{-1}+z^{-2}}{1+z^{-2}} s=D∗1+z−21−Ez−1+z−2代入上式可得:
H ( z ) = 1 − 2 z − 1 + z − 2 ( C 1 2 + 1.414 C 1 + 1 ) + ( 2 C 1 2 − 2 ) z − 1 + ( C 1 2 − 1.414 C 1 + 1 ) z − 1 \begin{aligned} H(z)=\frac{1-2z^{-1}+z^{-2}}{(C_1^2+1.414C_1+1)+(2C_1^2-2)z^{-1}+(C_1^2-1.414C_1+1)z^{-1}} \end{aligned} H(z)=(C12+1.414C1+1)+(2C12−2)z−1+(C12−1.414C1+1)z−11−2z−1+z−2
令 G = 1 C 1 2 + 1.414 C 1 + 1 ,其中 C 1 = t a n ω c 2 , ω c = 2 π f c f s G=\frac{1}{C_1^2+1.414C_1+1},其中C_1=tan\frac{ω_c}{2},ω_c=\frac{2πf_c}{f_s} G=C12+1.414C1+11,其中C1=tan2ωc,ωc=fs2πfc。
可得: B 0 = G , B 1 = − 2 G , B 2 = G , A 0 = 1 , A 1 = G ( 2 C 1 2 − 2 ) , A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) B_0=G,B_1=-2G,B_2=G,A_0=1,A_1=G(2C_1^2-2),A_2=G(C_1^2-1.414C_1+1) B0=G,B1=−2G,B2=G,A0=1,A1=G(2C12−2),A2=G(C12−1.414C1+1)。
2.3.2.1 2阶Butterworth 带通滤波器设计举例(仅个人推测,应该是错的)
设定fs=44100Hz, fc=1000Hz 计算2阶Butterworth HPF filter coefficients
因为归一化所以 Ω c = 1 Ω_c=1 Ωc=1,所以代入 C 1 = Ω c ∗ t a n ω 2 C_1=Ω_c*tan\frac{ω}{2} C1=Ωc∗tan2ω可得:
C 1 = 1 ∗ t a n 2 ∗ π ∗ f c f s 2 = 1 ∗ t a n 2 ∗ π ∗ 1000 44100 2 = 0.071358 C_1=1*tan\frac{\frac{2*π*f_c}{f_s}}{2}=1*tan\frac{\frac{2*π*1000}{44100}}{2}=0.071358 C1=1∗tan2fs2∗π∗fc=1∗tan2441002∗π∗1000=0.071358 G = 1 C 1 2 + 1.414 C 1 + 1 = 1 0.07135 8 2 + 1.414 ∗ 0.071358 + 1 = 0.904152203356 G=\frac{1}{C_1^2+1.414C_1+1}=\frac{1}{0.071358^2+1.414*0.071358+1}=0.904152203356 G=C12+1.414C1+11=0.0713582+1.414∗0.071358+11=0.904152203356代入 B 0 = G , B 1 = − 2 G , B 2 = G , A 0 = 1 , A 1 = G ( 2 C 1 2 − 2 ) , A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) B_0=G,B_1=-2G,B_2=G,A_0=1,A_1=G(2C_1^2-2),A_2=G(C_1^2-1.414C_1+1) B0=G,B1=−2G,B2=G,A0=1,A1=G(2C12−2),A2=G(C12−1.414C1+1)可求出:
B 0 = G = 0.904152203356 B_0=G=0.904152203356 B0=G=0.904152203356 B 1 = − 2 G = − 1.808304406712 B_1=-2G=-1.808304406712 B1=−2G=−1.808304406712 B 2 = G = 0.904152203356 B_2=G=0.904152203356 B2=G=0.904152203356 A 0 = 1 A_0=1 A0=1 A 1 = G ( 2 C 1 2 − 2 ) = 0.904152203356 ∗ ( 2 ∗ 0.07135 8 2 − 2 ) = − 1.799096409760 A_1=G(2C_1^2-2)=0.904152203356*(2*0.071358^2-2)=-1.799096409760 A1=G(2C12−2)=0.904152203356∗(2∗0.0713582−2)=−1.799096409760 A 2 = G ( C 1 2 − 1.414 C 1 + 1 ) = 0.904152203356 ∗ ( 0.07135 8 2 − 1.414 ∗ 0.071358 + 1 ) = 0.817510981662 A_2=G(C_1^2-1.414C_1+1)=0.904152203356*(0.071358^2-1.414*0.071358+1)=0.817510981662 A2=G(C12−1.414C1+1)=0.904152203356∗(0.0713582−1.414∗0.071358+1)=0.817510981662。
2.3.2.2 2阶Butterworth 带通滤波器设计Matlab验证
2.4、带阻滤波器(待推算完善)
s = D 1 ∗ 1 − z − 2 1 − E 1 z − 1 + z − 2 s=D_1*\frac{1-z^{-2}}{1-E_1z^{-1}+z^{-2}} s=D1∗1−E1z−1+z−21−z−2 Ω c = D 1 ∗ s i n ω c o s ω − c o s ω 0 Ω_c=D_1*\frac{sinω}{cosω-cosω_0} Ωc=D1∗cosω−cosω0sinω其中 D 1 = Ω c ∗ t a n ( ω 2 − ω 1 2 ) D_1=Ω_c*tan(\frac{ω_2-ω_1}{2}) D1=Ωc∗tan(2ω2−ω1) E 1 = 2 c o s ( ω 2 + ω 1 2 ) c o s ( ω 2 − ω 1 2 ) = 2 c o s ω 0 E_1=\frac{2cos(\frac{ω_2+ω_1}{2})}{cos(\frac{ω_2-ω_1}{2})}=2cosω_0 E1=cos(2ω2−ω1)2cos(2ω2+ω1)=2cosω0
2.4.1 2阶Butterworth 带阻滤波器设计(待推算完善)
2.4.1.1 2阶Butterworth 带阻滤波器设计举例(待推算完善)
2.4.2.2 2阶Butterworth 带阻滤波器设计Matlab验证
相关文章:
FOC——Butterworth (巴特沃斯)数字滤波器(2025.03.18)
参考链接1: [DSP] Butterworth (巴特沃斯)数字滤波器设计参考 参考链接2: 陈佩青《数字信号处理教程》 参考链接3: ButterWorthFIlter(巴特沃斯滤波器) 在此感谢各位前辈大佬的总结,写这个只是为了记录学习大佬资料的过程,内容基本…...
Redis如何实现持久化
Redis如何实现持久化 Redis默认将所有数据存储在内存中,虽然读写效率极高,但存在两大风险 数据易失性:进程重启或服务器宕机导致内存数据丢失。恢复成本高:无法直接通过内存重建大规模数据集。 Redis作为高性能的键值数据库&…...
docker安装rabbitmq并配置hyperf使用
为满足您的高标准需求,我将分步骤为您详细解释如何通过Docker安装RabbitMQ服务器,并展示如何配置PHP的Hyperf框架来使用RabbitMQ。 安装RabbitMQ: 获取RabbitMQ镜像在终端中运行以下命令来拉取RabbitMQ的官方Docker镜像: docker …...
极空间NAS部署gitea教程
极空间NAS部署gitea步骤教程 背景1. 准备镜像1.1 极空间官方1.2 Win系统docker再上传1.3 镜像转录 2. MySql配置2.1 容器配置2.2 命令行配置 3. gitea配置3.1 容器配置3.2 打开网页3.3 网页配置安装 参考资料 背景 极空间Nas和别的Nas不同的地方就在于,他不是那种标…...
大模型学习-从零开始在colab训练大模型
目录 写这篇文章的目的 1.准备训练所需的文件 2.将压缩包上传到谷歌云盘 使用colab 3.训练 写这篇文章的目的 这篇文章是对:大模型学习-在colab中训练并更换模型_colab调整模型-CSDN博客的一个优化,因为在之前的博文中,我是提供了一个现…...
【商城实战(38)】Spring Boot:从本地事务到分布式事务,商城数据一致性的守护之旅
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
漏洞知识点《PHP数组绕过深入解析》
在PHP中,通过数组绕过安全限制的核心原理与PHP语言特性和底层实现机制密切相关。以下是具体原因及技术细节分析: 一、PHP参数解析机制的特性 PHP的$_GET、$_POST等超全局变量支持将用户输入自动解析为数组。例如,通过URL参数?username[0]a…...
【极光 Orbit·STC8x】05. GPIO库函数驱动LED流动
【极光 OrbitSTC8】05. GPIO库函数驱动LED流动 七律 逐光流转 八灯列阵若星河,状态为舟渡长波。 寄存器中藏玄机,Switch语句定山河。 循环往复如潮涌,步骤变量掌沉浮。 单片机前展锋芒,代码织就光之舞。 摘要 本文基于STC8H8K6…...
SSH配置过程及无法正常链接问题的解决【小白教学】
1.尝试克隆github上的项目,发现无法正常下载【之前有些是可以的】 git clone https://github.com/mogualla/PythonRobotics.git --depth 3 出现下面的提示【错误】: Cloning into PythonRobotics... fatal: unable to access https://github.com/mogua…...
总结 HTTP 协议的基本格式, 相关知识以及抓包工具fiddler的使用
目录 1 HTTP是什么 2 HTTP协议格式 3 HTTP请求(Request) 3.1 认识URL 3.2 方法 3.3 认识请求"报头"(header) 3.3.1 Host 3.3.2 Content-Length 3.3.3 Content-Type 3.3.4 User-Agent (简称UA) 3.3.5 Referer 3.3.6 Cookie和Session 4 HTTP响应详解 4.…...
Conda 虚拟环境创建:加不加 Python 版本的深度剖析
在 conda 中创建虚拟环境时,是否指定 Python 具体版本会直接影响环境构建的底层逻辑、依赖管理方式以及后续开发的可控性。 一、核心机制对比 不指定 Python 版本 (conda create -n env_name) 默认继承基础环境版本 Conda 会使用当前基础环境(如 base&am…...
docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)
文章目录 前言第一部分:镜像获取🚀 方式一:切换国内下载镜像✅1. 下载anythingllm✅ 2. 下载open-webui 🚀方式二:下载我分享的百度云✅ anythingllm压缩包百度云链接❎ open-webui压缩包 第二部分:下载之后…...
C#命令行参数用法
C#命令行参数用法 static void Main(string[] args){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);// 解析命令行参数if (args.Length > 0){// 这里处理命令行参数,例如:打开文件、设置配置等// 例如&…...
Unity3D开发AI桌面精灵/宠物系列 【二】 语音唤醒 ivw 的两种方式-Windows本地或第三方讯飞等
Unity3D 交互式AI桌面宠物开发系列【二】ivw 语音唤醒 该系列主要介绍怎么制作AI桌面宠物的流程,我会从项目开始创建初期到最终可以和AI宠物进行交互为止,项目已经开发完成,我会仔细梳理一下流程,分步讲解。 这篇文章主要讲有关于…...
Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测
基本介绍 适用于matlab2020及以上。可任意选择置信区间,区间覆盖率picp、区间平均宽度百分比等等,可用于预测不确定性,效果如图所示,采用KDE,4种分布进行预测,有对比,可以替换成自己的数据。 …...
第2章:容器核心原理:深入理解Namespace、Cgroup与联合文件系统
第2章:容器核心原理:深入理解Namespace、Cgroup与联合文件系统 作者:DogDog_Shuai 阅读时间:约20分钟 难度:中级 目录 1. 引言2. Linux容器核心技术3. Namespace详解4. Cgroup详解5. 联合文件系统6. 容器运行时原理...
用css绘制收银键盘
最近需求说需要自己弄个收银键盘,于是乎直接上手搓 主要基于Vue3写的,主要是CSS <template><view class"container"><view class"info"><image class"img" src"" mode"">&l…...
aws训练快速入门教程
AWS 相关核心概念 简洁地介绍一下AWS训练云服务的核心关联概念: AWS核心服务层: 基础设施层: EC2(计算), S3(存储), RDS(数据库)等人工智能层: SageMaker(训练平台), AI服务等 机器学习服务分级: 高层: 预构建AI服务(开箱即用)中层: SageMaker(主要训练平台)底层: 框架和基…...
基于FPGA轨道交通6U机箱CPCI脉冲板板卡
板卡简介: 本板为脉冲板,脉冲板主要执行CPU下达的指令,通过实现各种控制算法来调节PWM,然后输出光纤PWM信号来驱动变频器功率模块以达到控制电机的目的。 性能规格: 电源:DC5V;15V FPGA&…...
数据库GreenDao的使用、升级、以及相关常用注释说明
目录 一、使用GreenDao的流程 添加GreenDao依赖配置greendao的generator生成文件使用GreenDao生成bean类 3.1 创建实体类 3.2 生成dao文件创建GreenDaoManager来进行统一管理,并初始化 4.1 创建GreenDaoManager 4.2 在Application中进行初始化GreenDao使用GreenDa…...
【C++】 —— 笔试刷题day_6
刷题day_6,继续加油哇! 今天这三道题全是高精度算法 一、大数加法 题目链接:大数加法 题目解析与解题思路 OK,这道题题目描述很简单,就是给我们两个字符串形式的数字,让我们计算这两个数字的和 看题目我…...
PostgreSQL:语言基础与数据库操作
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
cmake 之 CMakeLists.txt 中的函数是从哪里来的
我们都知道,cmake会解释执行 CMakeLists.txt 以及其他 *.cmake 脚本, 这里先给出一个“先验” 的知识点: 任何一个独立脚本或脚本函数命令的执行,都是通过 CPP 函数 RunListFile(...) 调用的 void cmMakefile::RunListFile(cmL…...
谷歌or-tools开源库入门
1.命令行编译程序 这里要说明下,直接用qt或者VS2022打开cmake工程,编译没有成功。所以,老老实实的按照官方教程来,使用命令行编译。 (1)准备 1)安装cmake,版本3.18以上࿰…...
深入解析 C++ Vector:全面掌握 STL 核心容器的原理与高效实践
一、Vector 的核心概念与特性 Vector 是 C 标准库中最常用的动态数组容器,其底层基于连续内存存储元素,兼具数组的高效访问与动态扩容的灵活性。以下是其核心特性: 1.1 核心特性对比 特性普通数组Vector 容器内存分配静态固定动态增长访问效…...
【MySQL】MySQL数据存储机制之存储引擎
目录 1.如何理解存储引擎? 2.MySQL 提供的存储引擎 3.存储引擎的功能特性 (1)存储介质 (2)事务处理能力 (3)锁定 (4)备份和恢复 (5)优化…...
OpenCV旋转估计(1)用于估计图像间仿射变换关系的类cv::detail::AffineBasedEstimator
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 基于仿射变换的估计器。 这种估计器使用匹配器估算的成对变换来为每个相机估算最终的变换。 cv::detail::AffineBasedEstimator 是 OpenCV 库中…...
小红书不绑定手机号会显示ip吗
小红书作为一个生活方式分享平台,拥有庞大的用户群体。在小红书上,用户可以分享自己的生活点滴、购物心得、美食体验等,与其他用户进行互动交流。最近,不少用户对于小红书是否会在不绑定手机号的情况下显示IP属地产生了疑问&#…...
网络空间安全(36)数据库权限提升获取webshell思路总结
一、获取数据库访问权限 寻找漏洞: SQL注入:这是最常见的方法之一。攻击者通过SQL注入漏洞,可以在数据库执行任意SQL语句,从而获取数据库中的数据,甚至可能获取数据库的访问权限。配置文件泄露:有时&#x…...
OceanBase 中,如何抓包分析应用连接超时的问题
本文作者:胡呈清,爱可生 DBA 团队成员,擅长故障分析、性能优化 与MySQL这类单机数据库相比,OceanBase分布式数据库的访问链路相对较长,因此在遇到连接异常时,排查过程需要额外考虑更多环节。接下来…...
用uv管理python环境/项目(各种应用场景)
一、安装uv 有python的情况 pip install uvWindows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"linux或macOS curl -LsSf https://astral.sh/uv/install.sh | sh二、换镜像源 uv不会读取pip的镜像源配置,所…...
Linux——进程(5)进程地址空间
先看一个程序和现象 预期现象是,子进程和父进程相互独立,子进程的gval是100,101,102....而父进程一直都是100. 结果我们并不意外,只是我们发现,父子进程的gval的地址是一样的,这有点颠覆我们的认…...
docker(1) -- centos镜像
1. 前言 我在WSL中运行的系统是ubuntu2024,并安装了docker,想要在docker中运行一个centos的系统。 2. 下载并运行镜像 # 下载centos最新版镜像 $ docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: P…...
Vitis 2024.1 无法正常编译custom ip的bug(因为Makefile里的wildcard)
现象:如果在vivado中,添加了自己的custom IP,比如AXI4 IP,那么在Vitis(2024.1)编译导出的原本的.xsa的时候,会构建build失败。报错代码是: "Compiling blank_test_ip..."…...
【源码阅读】多个函数抽象为类(实现各种类型文件转为PDF)
目录 一、原始函数二、类三、转换过程 一、原始函数 最开始就是写了几个函数(包括doc、excel、ppt类型的文件)转换为pdf,需要将这些函数形成一个类。相似的一类函数就可以组成一个实现特定功能的类 import subprocess import pandas as pd i…...
word插入Mathtype公式居中和自动更新
word插入公式自动更新 前提:安装Mathtype 1.word中查看页的宽度 出现如下 2.设置样式 出现这个窗口 给样式随便起个名字 3.修改样式 3.1 设置两个制表位 第二个 3.2 修改公式字体 如下所示 4. 修改公式格式 4.1在word中打开 Mathtype 4.2 修改公式的格式 变成…...
SpringSecurity配置(自定义认证过滤器)
文末有本篇文章的项目源码文件可供下载学习 在这个案例中,我们已经实现了自定义登录URI的操作,登录成功之后,我们再次访问后端中的API的时候要在请求头中携带token,此时的token是jwt字符串,我们需要将该jwt字符串进行解析,查看解析后的User对象是否处于登录状态.登录状态下,将…...
python字符级差异分析并生成 Word 报告 自然语言处理断句
import difflib from docx import Document from docx.shared import RGBColor from snownlp import SnowNLPdef analyze_char_differences(text_a, text_b):"""分析两个文本的字符级差异:param text_a: 第一个文本:param text_b: 第二个文本"""…...
企业级云MES全套源码,支持app、小程序、H5、台后管理端
企业级云MES全套源码,支持app、小程序、H5、台后管理端,全套源码 开发环境 技术架构:springboot vue-element-plus-admin 开发语言:Java 开发工具:idea 前端框架:vue.js 后端框架ÿ…...
使用GoldenGate完成SQLserver到Oracle的数据实时同步
一、环境准备 *项目**源环境**目标环境*操作系统CentOS Linux release 7.6CentOS Linux release 7.6IP地址192.168.3.92192.168.3.168数据库及版本SQLserver 2016Oracle 11.2.0.4.0GoldenGate用户oggoggGoldenGate版本12.3.0.2.012.3.0.2.0 二、OGG架构 GoldenGate v11 能够…...
【OpenCV C++】如何快速 高效的计算出图像中大于值的像素个数? 遍历比较吗? No,效率太低!那么如何更高效?
文章目录 1 问题2 分析3 代码实现 (两种方法实现)方法1: 使用cv::compare方法2: 使用cv::threshold3.2 compare和threshold 看起来都有二值化效果? 那么二者效率?4 compare函数解释4.1 参数解释4.2 底层行为规则4.3 应用示例4.4 典型应用场景1 问题 一幅图像的目标区域ROI…...
Golang | 每日一练 (6)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Golang | 每日一练 (6)题目参考答案什么是内存逃逸&am…...
git clone, 算是解决可以访问github但无法clone的问题
本文的前提是使用了**且可以正常访问github 查看代理的端口 将其配置到git 首先查看git配置 git config --list然后添加配置,我这边使用的是Hiddfy默认的端口是12334,如果是clash应该是7890 git config --global http.proxy 127.0.0.1:12334其他 删除…...
SpringBoot项目controller层接收对应格式请求的相关RequestMapping配置
目录 (1) (2) (3) 注:此情况注意和(4)中情况进行区分 (4) 在几个springboot项目开发后,我总结了以下的一些常见的接收对应请求的…...
基于ssm学科竞赛小程序的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 随着信息时代的来临,过去的学科竞赛管理方式的缺点逐渐暴露,本次对过去的学科竞赛管理方式的缺点进行分析,采取计算机方式构建学科竞赛小程序。本文通过阅读相关文献,研究国内外相关技术,提出了一种关于竞赛信息…...
【论文笔记】VGGT-从2D感知3D:pose估计+稠密重建+点跟踪
VGG组联合Meta改进了dust3r,输入图片,输出对应的一系列3D属性,被CVPR2025收录! 1.abstract 我们提出了VGGT,一种前馈神经网络,能够直接从场景的一个、几个或数百个视角推断出所有关键的3D属性,…...
【大模型系列篇】硅基智能开源数字人模型HeyGem.ai,开启数字人时刻
硅基智能开源数字人模型HeyGem.ai, 1秒克隆生成4K视频, 支持离线多语言, 开源72小时狂揽1.3k星, 目前已经获得3.4k星。 硅基智能正式宣布在GitHub开源全球TOP级数字人模型,同时发布基于该模型的同名数字人工具硅基数字人克隆的本地安装包,这一举措标志着…...
腾讯云容器集群:节点可以访问公网,节点内的pod无法访问公网
腾讯云容器集群:节点可以访问公网,节点内的pod无法访问公网 curl https://www.baidu.com/index.htm参考链接:https://cloud.tencent.com/document/product/457/50356 sysctl -a|grep net.ipv4.conf.all.rp_filter sysctl -a|grep net.ipv4.c…...
Winform优化控件布局性能 SuspendLayout 和 ResumeLayout 方法详解
在Winform中,SuspendLayout 和 ResumeLayout 方法用于优化控件布局性能,适用于批量修改控件属性或动态调整控件时的场景。以下是具体使用方法和注意事项: 一、基本用法 1.调用 SuspendLayout() 在开始批量修改控件前,调用…...
基于Netty实现高性能HTTP服务的架构解析
一、HTTP协议基础 1.1 HTTP协议概述 HTTP(HyperText Transfer Protocol)作为现代Web应用的基石,是基于TCP/IP的应用层协议,具有以下核心特性: 请求/响应模型:客户端发起请求,服务端返回响应无…...