DerivativeFilter[data,{n1,n2,…}]
计算 data 在第 i 层的 ni
阶导数.
DerivativeFilter[data,{n1,n2,…},σ]
计算标准差为 σ 的高斯尺度上的导数.
DerivativeFilter[data,{der1,der2,…},…]
计算多个导数 der1、der2、….
DerivativeFilter
DerivativeFilter[data,{n1,n2,…}]
计算 data 在第 i 层的 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 的顶部到底部,第二个坐标从左到右增加.
- DerivativeFilter 给出与 data 有同样维度的结果.
- 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]范围 (13)
数据 (5)
DerivativeFilter[BoxMatrix[1, 5], {1, 1}]//Chop//MatrixForm获取 TimeSeries 对象的一阶导数:
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[[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 语言. 2010. "DerivativeFilter." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2025. https://reference.wolfram.com/language/ref/DerivativeFilter.html.
APA
Wolfram 语言. (2010). DerivativeFilter. Wolfram 语言与系统参考资料中心. 追溯自 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: 09-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: 09-September-2026]}