DerivativeFilter[data,{n1,n2,…}]
レベル i の data の ni
次微分を計算する.
DerivativeFilter[data,{n1,n2,…},σ]
標準偏差 σ のガウススケールで微分を計算する.
DerivativeFilter[data,{der1,der2,…},…]
複数の微分 der1, der2, …を計算する.
DerivativeFilter
DerivativeFilter[data,{n1,n2,…}]
レベル i の data の ni
次微分を計算する.
DerivativeFilter[data,{n1,n2,…},σ]
標準偏差 σ のガウススケールで微分を計算する.
DerivativeFilter[data,{der1,der2,…},…]
複数の微分 der1, der2, …を計算する.
詳細とオプション
- DerivativeFilterは,スプライン補間モデルに基づいてデータの微分を計算する線形フィルタである.標準偏差 σ(デフォルト値は0)のガウスカーネルによる正規化を使って,ノイズに対する感受性を削減することができる.
- data は次のいずれでもよい.
-
list 任意階数の数値配列 tseries TimeSeries,TemporalData等の時間データ image 任意のImageオブジェクトまたはImage3Dオブジェクト audio Audioオブジェクト video Videoオブジェクト - DerivativeFilterは data の各レベルに別々に動作する.
- DerivativeFilter[image,…]は配列の座標系を使う.最初の座標は image の上から下へ,2番目の座標は左から右へ大きくなる.
- DerivativeFilterは image と次元が等しい結果を与える.
- DerivativeFilterには次のオプションを使うことができる.
-
InterpolationOrder Automatic 補間次数(9まで) Padding "Fixed" 充填法 - Padding->{pad1,pad2,…}のときは,data の全次元に異なる充填スキームを使うことができる.
- 微分次数は指定された補間次数よりも下でなければならない.
例題
すべて開く すべて閉じる例 (3)
DerivativeFilter[[image], {0, 1}]//ImageAdjustDerivativeFilter[[image], {0, 1}, 3]//ImageAdjustdata = PixelValue[[image], {All, 60}];
der = DerivativeFilter[data, {1}];ListLinePlot[{data, der}, PlotRange -> All]スコープ (14)
データ (6)
DerivativeFilter[BoxMatrix[1, 5], {1, 1}]//Chop//MatrixFormTimeSeriesオブジェクトの一次微分を得る:
ts = TemporalData[TimeSeries, {{{-3.47, -0.95, 4.45, 9.11, 14.4, 16.07, 20.16, 18.76, 16.88, 9.88, 4.39,
-1.33, -5.41, -4.2, 0.04, 5.73, 11.01, 14.89, 20.36, 18.27, 15.19, 9.74, 6.06, 0.33, -2.74,
-1.83, 3.83, 6.68, 12.06, 15.51, 20.64, 19.73, ... 15.41, 19.84, 20.45, 16.79, 9.6, 4.26,
-2.3, -1.26, -2.29, -2.08, 7.1, 10.29, 16.92, 19.01, 19.79}}, {{0, 91, 1}}, 1,
{"Continuous", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False, 11.2];
filtered = DerivativeFilter[ts, {1}];
ListLinePlot[{ts, filtered}, PlotLegends -> {"original", "filtered"}]Audio信号にフィルタをかける:
a = Import["ExampleData/rule30.wav", "Audio"];
b = AudioNormalize[DerivativeFilter[a, {1}]]AudioPlot[{a, b}]DerivativeFilter[[image], {1, 0}]//ImageAdjustDerivativeFilter[Video["ExampleData/fish.mp4"], {1, 0}]DerivativeFilter[[image], {1, 0, 0}]パラメータ (8)
DerivativeFilter[{1, 2, -1, 0, 1, 2}, {0}]step = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1};ListLinePlot[DerivativeFilter[step, {{1}, {2}, {3}}], PlotRange -> All, Axes -> {True, False}, Ticks -> False, PlotLegends -> {1, 2, 3}]DerivativeFilter[[image], {1, 0}]//ImageAdjustDerivativeFilter[[image], {0, 1}]//ImageAdjust10DerivativeFilter[[image], {2, 2}]ImageAdjust /@ DerivativeFilter[[image], {{1, 0}, {0, 1}, {0, 2}}]i = [image];
DerivativeFilter[i, {1, 0, 0}]DerivativeFilter[i, {0, 1, 1}]filtered = DerivativeFilter[TemporalData[TimeSeries, {{{0., -0.27267267057145633, -0.6672983789995302, -0.5338541947930846,
-0.6117404489279314, -0.6755527076595494, -0.02125421294486496, -0.10792797291843935,
-0.6138271235477938, -0.3248568606554575, -0.08843449054 ... 2053424, -0.49980440691873723, -0.5388679788215971,
-0.4101602764645551}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1], {1}, #]& /@ {0, 3};
ListLinePlot[filtered, PlotRange -> All, PlotLegends -> {"σ=0 (default)", "σ=3"}]ImageAdjust@DerivativeFilter[[image], {0, 1}, #]& /@ {0, 5, 10}オプション (3)
InterpolationOrder (1)
InterpolationOrderの値を変えて配列にフィルタをかける:
Chop@MatrixForm@DerivativeFilter[ArrayPad[{1}, 5], {1},
InterpolationOrder -> #]& /@ {2, 3}Padding (2)
v = {1, 2, 3, 2, 2, 1, 2, 1, 0, 0, 0};
pad = {"Fixed", "Periodic", "Reflected"};
ListLinePlot[DerivativeFilter[v, {1}, Padding -> #]& /@ pad, PlotLegends -> pad, PlotRange -> All]ImageAdjust[DerivativeFilter[[image], {1, 1}, 3, Padding -> #]]& /@ {"Fixed", "Periodic", 0.2}ImageAdjust[DerivativeFilter[[image], {1, 1}, 3, Padding -> {"Fixed", "Periodic"}]]アプリケーション (5)
{Ly, Lx} = DerivativeFilter[[image], {{1, 0}, {0, 1}}];
Sqrt[Lx^2 + Ly^2]//ImageAdjust{Lxx, Lyy} = DerivativeFilter[[image], {{2, 0}, {0, 2}}, 6];
Lxx + Lyy//ColorNegate//ImageAdjustσ = 2;
{Lxx, Lxy, Lyy} = DerivativeFilter[[image], {{0, 2}, {1, 1}, {2, 0}}, σ];
(σ^3 / 2/2)(Sqrt[(Lxx - Lyy)^2 + 4Lxy^2] - Lxx - Lyy)//ImageAdjusttJunctionFilter[img_, σ_ : 1] :=
Module[
{data = ImageData[img], Lx, Ly, Lxx, Lxy, Lyy, Lxxx, Lxxy, Lxyy, Lyyy},
{Lx, Ly} = DerivativeFilter[data, {{0, 1}, {1, 0}}, σ];
{Lxx, Lxy, Lyy} = DerivativeFilter[data, {{0, 2}, {1, 1}, {2, 0}}, σ];
{Lxxx, Lxxy, Lxyy, Lyyy} = DerivativeFilter[data, {{0, 3}, {1, 2}, {2, 1}, {3, 0}}, σ];
Image[
Chop[-Lx^5Lxyy + Ly^4(2Lxy^2 - Lxxy Ly + Lxx Lyy) + Lx Ly^3(6Lxx Lxy - Lxxx Ly + 2Lxyy Ly - 6Lxy Lyy) + Lx^3Ly(-6Lxx Lxy - Lxxx Ly + Lxyy Ly + 6Lxy Lyy) + Lx^4(2Lxy^2 + 2Lxxy Ly + Lxx Lyy - Ly Lyyy) + Lx^2Ly^2(3Lxx^2 - 8Lxy^2 + Lxxy Ly - 4Lxx Lyy + 3Lyy^2 - Ly Lyyy)]
]
];
tJunctionFilter[[image], 2]//ImageAdjustNorm[DerivativeFilter[[image], {{1, 0}, {0, 1}}]]特性と関係 (4)
の値が大きいと,GaussianFilter とDerivativeFilterの結果は収束する:
data = {0, 0, 1, 2, 1, 0, 0, 0, 0, 1, 2, 5, -1, 0, 2, 1};
σ = 0.5;
ListLinePlot[
{DerivativeFilter[data, {1}, σ], GaussianFilter[data, σ{3, 1}, {1}]},
PlotRange -> All
]σ = 1;
ListLinePlot[
{DerivativeFilter[data, {1}, σ], GaussianFilter[data, σ{3, 1}, {1}]},
PlotRange -> All
]σ = 1.5;
ListLinePlot[
{DerivativeFilter[data, {1}, σ], GaussianFilter[data, σ{3, 1}, {1}]},
PlotRange -> All
]スプライン補間のDerivativeFilterおよび関連微分は,同じ結果を返す:
data = {0, 0, 0, 0, 0, 0, 0, 0, 0.7, 1, 1, 1, 1, 1, 1, 1, 1};f = ListInterpolation[data, Method -> "Spline", InterpolationOrder -> 3];f'[9]DerivativeFilter[data, {1}, InterpolationOrder -> 3][[9]]Plot[
Evaluate[Derivative[1][f][x]],
{x, 1, Length[data]},
PlotRange -> All,
Epilog -> {Red, PointSize[0.025], MapIndexed[Point[{First[#2], #1}]&, DerivativeFilter[data, {1}, InterpolationOrder -> 3]]}
]バイナリ画像に微分フィルタを適用すると,実数型のグレースケール画像が返される:
d = Image[DiskMatrix[10, 81], "Bit"];ImageType[DerivativeFilter[d, {1, 1}]]DerivativeFilterは線形フィルタである:
list1 = {1, 1, 1, 1, 1, 0, 0, 3, 12, 1, 0, 0, 0, 0, 0};
list2 = {2, 2, 2, 2, 1, 5, 4, 6, 2, 2, 1, 1, 1, 1, 1};
DerivativeFilter[list1 + list2, {1}] == DerivativeFilter[list1, {1}] + DerivativeFilter[list2, {1}]関連するガイド
テキスト
Wolfram Research (2010), DerivativeFilter, Wolfram言語関数, https://reference.wolfram.com/language/ref/DerivativeFilter.html (2025年に更新).
CMS
Wolfram Language. 2010. "DerivativeFilter." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/DerivativeFilter.html.
APA
Wolfram Language. (2010). DerivativeFilter. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DerivativeFilter.html
BibTeX
@misc{reference.wolfram_2026_derivativefilter, author="Wolfram Research", title="{DerivativeFilter}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/DerivativeFilter.html}", note=[Accessed: 11-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_derivativefilter, organization={Wolfram Research}, title={DerivativeFilter}, year={2025}, url={https://reference.wolfram.com/language/ref/DerivativeFilter.html}, note=[Accessed: 11-September-2026]}