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,ω}]は,周波数 ω での減衰が
のローパスフィルタを返す. - ButterworthFilterModel[n]はカットオフ周波数1を使う.
- ローパスフィルタ指定{"type",spec}には以下のすべての形が使える.
-

{"Lowpass",n} カットオフ周波数1の n 次ローパスフィルタ 
{"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値 q を使う 
{"Bandpass",{ωs1,ωp1,ωp2,ωs2},{as,ap}} 完全フィルタ指定 - バンドストップフィルタ指定
-

{"Bandstop",n,{ωp1,ωp2}} パスバンド周波数 ωp1および ωp2のバンドストップフィルタ 
{"Bandstop",n,{{ω,q}}} 中心周波数 ω,Q値 q を使う 
{"Bandstop",{ωp1,ωs1,ωs2,ωp2},{ap,as}} 完全フィルタ指定 - 値 apと asはそれぞれパスバンドとストップバンドの減衰の絶対値である.
- ゲイン比が
のとき,減衰は
である. - Q値 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で次数3のハイパスバターワースフィルタを作る:
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"]パスバンド周波数
および
,次数3の減衰を使って"Bandpass"フィルタを作る:
ω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"]中心周波数および品質係数の指定{{ω,q}}を用いた同一フィルタ:
ω = 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}];バターワースフィルタ位相は,応答を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}]次のパスバンド周波数,ストップバンド周波数,減衰を満足するバターワース近似を使ってデジタルFIRローパスフィルタを設計する:
Subscript[ω, p] = 0.4π;Subscript[ω, s] = 0.7π;
Subscript[a, p] = 3;Subscript[a, s] = 20;サンプリング周期1を仮定してこれと等価なアナログ周波数を得る:
{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]dtf = ToDiscreteTimeModel[ButterworthFilterModel[{"Lowpass", {2 Tan[(0.4π/2)], 2 Tan[(0.7π/2)]}, {3, 20}}, s], 1, z]//Chop離散時間バターワースフィルタのインパルス応答から希望数のFIRサンプルを得る:
OutputResponse[dtf, KroneckerDelta[n], {n, 0, 24}]//ChopListPlot[%, PlotRange -> All, Filling -> 0]バターワースフィルタのバターワース近似を使って金融データを平滑化する:
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"}]ローパスバターワースフィルタを使って画像にフィルタをかける:
h = ToDiscreteTimeModel[ButterworthFilterModel[5], 1];
RecurrenceFilter[h, [image]]ハイパスバターワースフィルタを使って画像にフィルタをかける:
h = ToDiscreteTimeModel[ButterworthFilterModel[{"Highpass", 3, 0.5}], 1];
RecurrenceFilter[h, [image]]特性と関係 (9)
ストップバンド減衰は,次数
が増えるにつれて10年間に
倍で増加する:
tf = ButterworthFilterModel[{"Lowpass", #}]& /@ {1, 2, 3};
BodePlot[tf, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Magnitude", PlotLegends -> {1, 2, 3}]"Bandpass"フィルタのパスバンド幅は品質因子 q が大きくなるにつれて小さくなる:
tf = ButterworthFilterModel[{"Bandpass", 2, {{1., #}}}]& /@ {0.5, 1., 3.};
BodePlot[tf, {0.1, 10}, GridLines -> Automatic, PlotLayout -> "Magnitude", PlotRange -> {-80, 5}, 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}]いくつかの品質因子についての"Bandpass"フィルタの位相応答:
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.}]]]バンドパスおよびバンドストップのフィルタ次数は与えられた次数の2倍である:
SystemsModelOrder[StateSpaceModel[ButterworthFilterModel[{"Bandpass", 3, {1, 10}}]]]tf = TransferFunctionExpand[ButterworthFilterModel[3, s]]//Choptf = 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 Language. 2012. "ButterworthFilterModel." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2016. https://reference.wolfram.com/language/ref/ButterworthFilterModel.html.
APA
Wolfram Language. (2012). ButterworthFilterModel. Wolfram Language & System Documentation Center. Retrieved from 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: 17-June-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: 17-June-2026]}