EquirippleFilterKernel[{{{ωL1,ωR1},{ωL2,ωR2},…},{a1,a2,…}},n]
指定された左右帯端周波数{ωLi,ωRi}と振幅 aiの場合に,等リプル振幅応答で長さ n の有限インパルス応答(FIR)フィルタカーネルを作る.
EquirippleFilterKernel[{{{ωL1,ωR1},{ωL2,ωR2},…},{a1,a2,…},{w1,…}},n]
各周波数帯に相対重み wiを使う.
EquirippleFilterKernel[{"type",{{{ωL1,ωR1},…},…}},n]
指定された"type"のフィルタを作る.
EquirippleFilterKernel
EquirippleFilterKernel[{{{ωL1,ωR1},{ωL2,ωR2},…},{a1,a2,…}},n]
指定された左右帯端周波数{ωLi,ωRi}と振幅 aiの場合に,等リプル振幅応答で長さ n の有限インパルス応答(FIR)フィルタカーネルを作る.
EquirippleFilterKernel[{{{ωL1,ωR1},{ωL2,ωR2},…},{a1,a2,…},{w1,…}},n]
各周波数帯に相対重み wiを使う.
EquirippleFilterKernel[{"type",{{{ωL1,ωR1},…},…}},n]
指定された"type"のフィルタを作る.
詳細とオプション
- EquirippleFilterKernelは,チェビシェフ(Chebyshev)の最小(ミニマックス)誤差を持つFIRフィルタのインパルス応答係数の長さ n の数値リストを返す.
- 使用可能なフィルタ指定のタイプ
-
"Multiband" 複数のパスバンドとストップバンドのフィルタ指定(デフォルト) "Differentiator" 微分器フィルタ "Hilbert" ヒルベルト(Hilbert)フィルタ - 周波数は0≤ωL1<ωR1<ωL2<ωR2<…<ωRk≤π となるような昇順で与えられる.
- 周波数帯,振幅,重みのリストの長さは同じでなければならない.
- 振幅の値は非負でなければならない.通常,値 ai=0でストップバンドを,ai=1でパスバンドを指定する.
- EquirippleFilterKernelで返されるカーネル ker をListConvolve[ker,data]で使ってフィルタを data に適用することができる.
- 使用可能なオプション
-
"GridDensity" 8 周波数領域サンプリング密度因子 WorkingPrecision MachinePrecision 内部計算に使用する精度
例題
すべて開く すべて閉じる例 (1)
h = EquirippleFilterKernel[{{{0, 1}, {1.4, Pi}}, {1, 0}}, 15]Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, Pi}]BodePlot[ListZTransform[h, z], {0, π}, SamplingPeriod -> 1, PlotLayout -> "Magnitude", ScalingFunctions -> {"Linear", Automatic}, GridLines -> Automatic, ImageSize -> Small]スコープ (6)
h = EquirippleFilterKernel[{{{0, (π/2) - 0.5}, {(π/2) + 0.5, π}}, {0, 1}}, 15]BodePlot[ListZTransform[h, z], {0, π}, SamplingPeriod -> 1, PlotLayout -> "Magnitude", ScalingFunctions -> {"Linear", Automatic}, GridLines -> Automatic]h = EquirippleFilterKernel[{{{0, 1}, {1.2, 2.2}, {2.4, Pi}}, {0, 1, 0}}, 35];
BodePlot[ListZTransform[h, z], {0, π}, SamplingPeriod -> 1, PlotLayout -> "Magnitude", ScalingFunctions -> {"Linear", Automatic}, GridLines -> Automatic]h = EquirippleFilterKernel[{{{0, 0.05}, {0.1, 0.15}, {0.18, 0.25}, {0.3, 0.36}, {0.41, 0.5}} 2 π, {0., 1., 0., 1., 0.}, {10., 1., 3., 1., 20.}}, 55];BodePlot[ListZTransform[h, z], {0, π}, SamplingPeriod -> 1, PlotLayout -> "Magnitude", ScalingFunctions -> {"Linear", Automatic}, GridLines -> Automatic]h = EquirippleFilterKernel[{"Differentiator", {{0, π}}, {1}}, 22];Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}, PlotRange -> {0, All}]h = EquirippleFilterKernel[{"Hilbert", {{0.1, 0.9 }π}, {1}}, 21];
Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}, PlotRange -> {0, All}]Plot[Arg[ListFourierSequenceTransform[h, ω, -10]], {ω, -π, π}, PlotRange -> All]h = EquirippleFilterKernel[{{{0, (π/2) - 0.5}, {(π/2) + 0.5, π}}, {1, 0}}, 15]Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}, PlotRange -> All, Epilog -> {Red, Dashed, Line[{{π / 2, 0}, {π / 2, 1}}]}]ハーフバンドンローパスフィルタをハイパスフィルタに変換する:
g = Table[(-1)^ih[[i]], {i, 15}]Plot[Evaluate[Abs[ListFourierSequenceTransform[#, ω]]& /@ {h, g}], {ω, 0, π}, PlotRange -> All, Epilog -> {Red, Dashed, Line[{{π / 2, 0}, {π / 2, 1}}]}]オプション (2)
GridDensity (1)
AbsoluteTiming[EquirippleFilterKernel[{{{0, .2}, {.25, .5}}2π, {1, 0}}, 100, "GridDensity" -> #];]& /@ {2, 16}filters = EquirippleFilterKernel[{{{0, .2}, {.25, .5}}2π, {1, 0}}, 100, "GridDensity" -> #]& /@ {2, 16};
Plot[Evaluate[20Log10[Abs[ListFourierSequenceTransform[#, x]]]], {x, 0, Pi}, PlotRange -> {-60, -120}, Exclusions -> False]& /@ filtersWorkingPrecision (1)
デフォルトで,MachinePrecisionが使われる:
h = EquirippleFilterKernel[{{{0, 1 / 3}, {2 / 3, 1}}Pi, {1, 0}}, 4]g = EquirippleFilterKernel[{{{0, 1 / 3}, {2 / 3, 1}}Pi, {1, 0}}, 4, WorkingPrecision -> 1]Plot[Evaluate[Abs[ListFourierSequenceTransform[#, ω]]& /@ {h, g}], {ω, 0, π}]EquirippleFilterKernel[{{{0, 1 / 3}, {2 / 3, 1}}Pi, {1, 0}}, 4, WorkingPrecision -> ∞]//Simplifyアプリケーション (4)
x = N@Table[Sin[(2π/256) 6 n], {n, 0, 255}];h = EquirippleFilterKernel[{"Differentiator", {{0, 0.9π}}, {1}}, 21];
y = 2Rescale[ListConvolve[h, x, 11]] - 1;ListLinePlot[{x, y}]h = EquirippleFilterKernel[{"Differentiator", {{0, 0.9π}}, {1}}, 7]r = 5ImageConvolve[[image], {h}]//Absc = 5ImageConvolve[[image], List /@ h]//AbsSqrt[r^2 + c^2]ヒルベルト(Hilbert)変換器を使って,xに対する直交数列を作る:
x = N@Table[Sin[(2π/256) 6 n], {n, 0, 255}];h = EquirippleFilterKernel[{"Hilbert", {{0.1, 0.9}} π, {1}}, 21];
y = ListConvolve[h, x, 11];x.y//Chopfilters = EquirippleFilterKernel[{{{0, π / # - 0.1}, {π / # + 0.1, Pi}}, {1, 0}}, 31]& /@ {2, 3, 5};Plot[Evaluate[Abs[ListFourierSequenceTransform[#, x]]& /@ filters], {x, 0, π}, PlotLegends -> {2, 3, 5}]特性と関係 (2)
フィルタの等リプル実現(青)と最小二乗実現(黄)について,ストップバンド周波数応答の動作を比較する:
f1 = EquirippleFilterKernel[{{{0, 1}, {1.4, Pi}}, {1, 0}}, 35];f2 = LeastSquaresFilterKernel[{{1.2}, {1, 0}}, 35];BodePlot[Evaluate[{ListZTransform[f1, z], ListZTransform[f2, z]}], {1.4, π}, SamplingPeriod -> 1, PlotRange -> {-60, 0}, PlotLayout -> "Magnitude", ScalingFunctions -> {"Linear", Automatic}, GridLines -> Automatic]長さ
のハーフバンドフィルタでは,
の正の実数についての位置
における係数の値はゼロである:
a = Chop[EquirippleFilterKernel[{{{0, (π/2) - 0.5}, {(π/2) + 0.5, π}}, {1, 0}}, 15], 0.0001]ListPlot[a, Axes -> {True, False}, Ticks -> False, PlotRange -> All, Filling -> 0]a = Chop[EquirippleFilterKernel[{{{0, (π/3) - 0.5}, {(π/3) + 0.5, π}}, {1, 0}}, 15], 0.0001]ListPlot[a, Axes -> {True, False}, Ticks -> False, PlotRange -> All, Filling -> 0]考えられる問題 (4)
EquirippleFilterKernel[{{{0, 1}, {2, Pi}}, {1, 1}}, 21]近傍帯の端の周波数は他とはっきり異なるものでなければならない:
EquirippleFilterKernel[{{{0, 1}, {1, Pi}}, {1, 0}}, 21]等リプルメソッドを使ったフィルタ設計は常に収束するとは限らない:
EquirippleFilterKernel[{{{0, 0.5}, {1., 2.0}, {2.5, π}}, {0, 1, 0}, {1, 1, 1}}, 15]ヒルベルト変圧器の著しく不均一な遷移帯は過剰なリプルの原因になる:
h = EquirippleFilterKernel[{"Hilbert", {{0.05, 0.4}}2Pi, {1}}, 31];
Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, Pi}, PlotRange -> {0, All}, Exclusions -> False]マルチバンドフィルタにおける著しく不均一な遷移帯域は,望ましくないリプルの原因になる:
h = EquirippleFilterKernel[{{{0., 0.5}, {1., 1.5}, {2.5, π}}, {0, 1, 0}}, 31];
Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, Pi}, PlotRange -> {0, All}, Exclusions -> False]関連するガイド
テキスト
Wolfram Research (2012), EquirippleFilterKernel, Wolfram言語関数, https://reference.wolfram.com/language/ref/EquirippleFilterKernel.html.
CMS
Wolfram Language. 2012. "EquirippleFilterKernel." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/EquirippleFilterKernel.html.
APA
Wolfram Language. (2012). EquirippleFilterKernel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/EquirippleFilterKernel.html
BibTeX
@misc{reference.wolfram_2026_equiripplefilterkernel, author="Wolfram Research", title="{EquirippleFilterKernel}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/EquirippleFilterKernel.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_equiripplefilterkernel, organization={Wolfram Research}, title={EquirippleFilterKernel}, year={2012}, url={https://reference.wolfram.com/language/ref/EquirippleFilterKernel.html}, note=[Accessed: 16-September-2026]}