创建阶数为 n、截止频率为 1 的低通 Butterworth 滤波器.
ButterworthFilterModel[{n,ωc}]
使用截止频率 ωc.
ButterworthFilterModel[{"type",spec}]
使用指定参数 spec 创建已知 "type" 的滤波器.
ButterworthFilterModel[{"type",spec},var]
以变量 var 的形式表示模型.
ButterworthFilterModel
创建阶数为 n、截止频率为 1 的低通 Butterworth 滤波器.
ButterworthFilterModel[{n,ωc}]
使用截止频率 ωc.
ButterworthFilterModel[{"type",spec}]
使用指定参数 spec 创建已知 "type" 的滤波器.
ButterworthFilterModel[{"type",spec},var]
以变量 var 的形式表示模型.
更多信息
- ButterworthFilterModel 以 TransferFunctionModel 形式返回滤波器.
- ButterworthFilterModel[{n,ω}] 返回频率 ω 处衰减量为
(约为3 dB)的低通滤波器. - ButterworthFilterModel[n] 使用截止频率 1.
- 低通滤波器规范 {"type",spec} 可以是以下任何形式之一:
-

{"Lowpass",n} 阶数为 n、截止频率为1的低通滤波器 
{"Lowpass",n,ωp} 使用截止频率 ωp 
{"Lowpass",{ωp,ωs},{ap,as}} 使用完整滤波器规范,给出带通和带阻频率和衰减量 - 高通滤波器规范:
-

{"Highpass",n} 截止频率为 1 的高通滤波器 
{"Highpass",n,ωp} 使用截止频率 ωp 
{"Highpass",{ωs,ωp},{as,ap}} 完整滤波器规范 - 带通滤波器规范:
-

{"Bandpass",n,{ωp1,ωp2}} 带通频率为 ωp1 和 ωp2 的带通滤波器 
{"Bandpass",n,{{ω,q}}} 使用中心频率 ω 和质量因子 q 
{"Bandpass",{ωs1,ωp1,ωp2,ωs2},{as,ap}} 完整滤波器规范 - 带阻滤波器规范:
-

{"Bandstop",n,{ωp1,ωp2}} 带通频率为 ωp1 和 ωp2 的带阻滤波器 
{"Bandstop",n,{{ω,q}}} 使用中心频率 ω 和质量因子 q 
{"Bandstop",{ωp1,ωs1,ωs2,ωp2},{ap,as}} 完整滤波器规范 - 值 ap 和 as 分别是带通和带阻衰减量的绝对值.
- 已知增益比率
,衰减量为
. - 质量因子 q 定义为
,其中
是带通或带阻滤波器的中心频率. q 值越高滤波器越窄.
范例
打开所有单元 关闭所有单元基本范例 (2)
ButterworthFilterModel[3]tf = ButterworthFilterModel[3, s]BodePlot[tf, GridLines -> Automatic, PlotLayout -> "Magnitude"]ωp = 1;ωs = 3;ap = 1.;as = 20.;
tf = ButterworthFilterModel[{"Lowpass", {ωp, ωs}, {ap, as}}, s]BodePlot[tf, GridLines -> {{ωp, ωs}, {-ap, -as}}, GridLinesStyle -> Pink, FrameTicks -> {{None, {-ap, -as}}, {{ωp, ωs}, None}}, PlotLayout -> "Magnitude"]范围 (4)
ButterworthFilterModel[{3, ω}, s]ButterworthFilterModel[{3, 1}, s]ButterworthFilterModel[{3, N[1, 24]}, s]BodePlot[ButterworthFilterModel[{3, 10.}, s], GridLines -> Automatic, PlotLayout -> "Magnitude"]tf = ButterworthFilterModel[{"Highpass", 3}, s]//ChopBodePlot[tf, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Magnitude"]创建截止频率为10 的三阶高通 Butterworth 滤波器:
BodePlot[ButterworthFilterModel[{"Highpass", 3, 10}], {1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]tf = ButterworthFilterModel[{"Highpass", {1, 10}, {60, -20Log10[1 / Sqrt[2]]}}, s];
BodePlot[tf, {1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]创建 "Bandpass" 滤波器,其中带通频率为
和
,衰减阶数为 3:
ωp1 = 1.;ωp2 = 10.;
BodePlot[ButterworthFilterModel[{"Bandpass", 3, {ωp1, ωp2}}], {0.1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]ω = Sqrt[ωp1 ωp2];q = ω / (ωp2 - ωp1);
BodePlot[ButterworthFilterModel[{"Bandpass", 3, {{ω, q}}}], {0.1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]tf = ButterworthFilterModel[{"Bandpass", {0.1, ωp1, ωp2, 100.}, {60, -20Log10[1 / Sqrt[2]]}}];
BodePlot[tf, {0.1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]创建一个带阻滤波器,其通带频率分别为
和
,且衰减阶数为 3:
ωp1 = 1.;ωp2 = 10.;
BodePlot[ButterworthFilterModel[{"Bandstop", 3, {ωp1, ωp2}}], {0.1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]ω = Sqrt[ωp1 ωp2];q = ω / (ωp2 - ωp1);
BodePlot[ButterworthFilterModel[{"Bandstop", 3, {{ω, q}}}], {0.1, 100}, GridLines -> Automatic, PlotLayout -> "Magnitude"]tf = ButterworthFilterModel[{"Bandstop", {0.1, 1., 10., 100.}, {-20Log10[1 / Sqrt[2]], 60}}];
BodePlot[tf, {0.01, 1000}, GridLines -> Automatic, PlotLayout -> "Magnitude"]应用 (6)
tf = ButterworthFilterModel[{"Lowpass", {1., 2.}, {1, 40}}];ω = 1 / 5;input = (Sin[ω t] + 1 / 2 Sin[25ω t]) UnitStep[t];
response1 = OutputResponse[tf, input, {t, 0, 100}];Butterworth 滤波器相位把响应移动了 Arg[tf[ω ]],其中 ω 是输入正弦波的频率:
Plot[{input, response1}, {t, 20, 100}]delay = Arg[tf[I ω]][[1, 1]] / ω;
Plot[Evaluate[Flatten[{input, response1 /. t -> (t - delay)}]], {t, 20, 100}]tf2 = TransferFunctionTransform[1 / #&, tf];Plot[Evaluate[Flatten[{input, OutputResponse[tf2, input, {t, 0, 100}]}]], {t, 20, 100}]使用 Butterworth 近似设计一个符合下列传输频带和抑止频带的频率和信号衰减的数字 FIR 低通滤波器:
Subscript[ω, p] = 0.4π;Subscript[ω, s] = 0.7π;
Subscript[a, p] = 3;Subscript[a, s] = 20;{Subscript[Ω, p] = 2 Tan[(Subscript[ω, p]/2)], Subscript[Ω, s] = 2 Tan[(Subscript[ω, s]/2)]}tf = ButterworthFilterModel[{"Lowpass", {Subscript[Ω, p], Subscript[Ω, s]}, {Subscript[a, p], Subscript[a, s]}}, s]dtf = ToDiscreteTimeModel[tf, 1, z]//ChopBodePlot[dtf, {0.1 π, π}, PlotLayout -> "Magnitude", GridLines -> {{Subscript[ω, p], Subscript[ω, s]}, {10^-Subscript[a, p] / 20, 10^-Subscript[a, s] / 20}}, ScalingFunctions -> {"Linear", "Absolute"}, PlotRange -> All]创建离散时间 Butterworth IIR 滤波器的 FIR 近似.
dtf = ToDiscreteTimeModel[ButterworthFilterModel[{"Lowpass", {2 Tan[(0.4π/2)], 2 Tan[(0.7π/2)]}, {3, 20}}, s], 1, z]//Chop从离散时间 Butterworth 滤波器的脉冲响应中获取 FIR 样本的所需数量:
OutputResponse[dtf, KroneckerDelta[n], {n, 0, 24}]//ChopListPlot[%, PlotRange -> All, Filling -> 0]使用 Butterworth 滤波器的 FIR 近似对金融数据进行平滑处理:
data = Transpose[FinancialData["GE", {"Jan. 1, 2012", "Jan. 1, 2013"}]["Path"]];
fir = OutputResponse[ToDiscreteTimeModel[ButterworthFilterModel[{3, 0.33}], 1], KroneckerDelta[n], {n, 0, 30}]//Chop//Flatten;
DateListPlot[{Transpose[data], Transpose[{data[[1]], ListConvolve[fir, data[[2]], 8]}]}, PlotRange -> All, PlotLegends -> {"original", "smoothed"}]使用离散时间的低通 Butterworth 滤波器进行图像滤波:
h = ToDiscreteTimeModel[ButterworthFilterModel[5], 1];
RecurrenceFilter[h, [image]]h = ToDiscreteTimeModel[ButterworthFilterModel[{"Highpass", 3, 0.5}], 1];
RecurrenceFilter[h, [image]]属性和关系 (9)
tf = ButterworthFilterModel[{"Lowpass", #}]& /@ {1, 2, 3};
BodePlot[tf, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Magnitude", PlotLegends -> {1, 2, 3}]随着质量因子 q 的增加,"Bandpass" 滤波器的带通宽度降低:
tf = ButterworthFilterModel[{"Bandpass", 2, {{1., #}}}]& /@ {0.5, 1., 3.};
BodePlot[tf, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Magnitude", PlotRange -> {5, -80}, PlotLegends -> {0.5, 1., 3.}]BodePlot[ButterworthFilterModel[{"Lowpass", 3}], {0.1, 10.}, PlotLayout -> "Phase", GridLines -> Automatic]BodePlot[ButterworthFilterModel[{"Lowpass", #}]& /@ {1, 2, 3}, {0.1, 10.}, PlotLayout -> "Phase", GridLines -> Automatic, PlotLegends -> {1, 2, 3}]BodePlot[ButterworthFilterModel[{"Bandpass", 2, {{1., #}}}]& /@ {1., 3., 5.}, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Phase", PlotLegends -> {1., 3., 5.}]SystemsModelOrder[StateSpaceModel[ButterworthFilterModel[{"Lowpass", {1., 2.}, {1., 20.}}]]]SystemsModelOrder[StateSpaceModel[ButterworthFilterModel[{"Lowpass", 3, 1.}]]]SystemsModelOrder[StateSpaceModel[ButterworthFilterModel[{"Bandpass", 3, {1, 10}}]]]tf = TransferFunctionExpand[ButterworthFilterModel[3, s]]//Chop通过求解分母的根得到 Butterworth 滤波器的极点:
tf = ButterworthFilterModel[5];Solve[Denominator@tf[s][[1, 1]] == 0, s]用 TransferFunctionPoles 提取极点:
poles = TransferFunctionPoles[tfm]PoleZeroPlot[tf, IconizedObject[«plotOpts»]]dtf = ToDiscreteTimeModel[ButterworthFilterModel[5, s], 1, z]PoleZeroPlot[dtf]lo = ButterworthFilterModel[3, s];
hi = TransferFunctionTransform[(1 / #&), lo]//ChopBodePlot[{lo, hi}, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Magnitude"]相关指南
-
▪
- 信号滤波与滤波器设计 ▪
- 信号处理 ▪
- 图像计算:更新历史
文本
Wolfram Research (2012),ButterworthFilterModel,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ButterworthFilterModel.html (更新于 2016 年).
CMS
Wolfram 语言. 2012. "ButterworthFilterModel." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2016. https://reference.wolfram.com/language/ref/ButterworthFilterModel.html.
APA
Wolfram 语言. (2012). ButterworthFilterModel. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ButterworthFilterModel.html 年
BibTeX
@misc{reference.wolfram_2026_butterworthfiltermodel, author="Wolfram Research", title="{ButterworthFilterModel}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/ButterworthFilterModel.html}", note=[Accessed: 09-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_butterworthfiltermodel, organization={Wolfram Research}, title={ButterworthFilterModel}, year={2016}, url={https://reference.wolfram.com/language/ref/ButterworthFilterModel.html}, note=[Accessed: 09-August-2026]}