PeakDetect[list]
给出二值列表,其中1对应于 list 中的峰值位置.
PeakDetect[list,σ]
检测存活于高斯模糊尺度为 σ 的峰值.
PeakDetect[list,σ,s]
用最小锐度 s 检测峰值.
PeakDetect[list,σ,s,t]
只检测值大于 t 的峰值.
PeakDetect[list,σ,{s,σs},{t,σt}]
对于阈值锐度和值使用不同的尺度.
PeakDetect
PeakDetect[list]
给出二值列表,其中1对应于 list 中的峰值位置.
PeakDetect[list,σ]
检测存活于高斯模糊尺度为 σ 的峰值.
PeakDetect[list,σ,s]
用最小锐度 s 检测峰值.
PeakDetect[list,σ,s,t]
只检测值大于 t 的峰值.
PeakDetect[list,σ,{s,σs},{t,σt}]
对于阈值锐度和值使用不同的尺度.
更多信息和选项
- PeakDetect 使用给定的约束查找局部极值.
- PeakDetect[list] 自动选择约束返回峰值集合.
- 输入 list 可以是下列形式之一:
-
{y1,y2,…} 值列表 TimeSeries[…] 正常采样的时间序列对象 EventSeries[…] 正常采样的事件序列对象 - PeakDetect[list,0,0,-∞] 返回所有峰值.
- PeakDetect[list,σ,s,t] 等价于 PeakDetect[list,σ,{s,σ},{t,0}].
- PeakDetect 接受 Padding 选项. 默认情况下,使用 Padding->"Reversed".
范例
打开所有单元 关闭所有单元基本范例 (1)
范围 (12)
数据 (4)
list = {1, 3, 5, 6, 6, 4, 3, 2, 4, 7, 3, 2, 4, 2, 2};ListPlot[{list, list PeakDetect[list]}, Joined -> {True, False}, Filling -> {2 -> 0}, FillingStyle -> Opacity[1]]TimeSeries 对象的峰值:
ts = TemporalData[TimeSeries, {{{54.75, 54.09, 53.89, 55.86, 55.9, 55.63, 53.63, 53.46, 54.15, 57.9,
56.9, 56.63, 56.2, 57.04, 58.32, 57.63, 59.21, 61.06, 62.48, 63.5, 62.74, 62.52, 64.4, 64.96,
64.06, 64.87, 67.06, 69.04, 68.12, 72.64, 73.5, ... 75.04,
75.59, 76.79, 76.86, 77.28, 78.76, 79.4, 79.81, 80.63, 80.88, 81.04, 81.15}},
{TemporalData`DateSpecification[{2013, 1, 2, 0, 0, 0.}, {2013, 11, 27, 0, 0, 0}, {1, "Week"}]},
1, {"Discrete", 1}, {"Discrete", 1}, 1, {}}, True, 10.];peaks = PeakDetect[ts, 0, 0, 0]ps = TimeSeries[ts["Values"] peaks["Values"], {ts["Times"]}];DateListPlot[{ts, ps}, Filling -> {2 -> 0}, Joined -> {True, False}]EventSeries 对象的峰值:
v = RandomInteger[{-10, 10}, n = 500];
t = Range[n] / N[n];es = EventSeries[v, {t}]peaks = PeakDetect[es, 1, 0, 0]ps = TimeSeriesThread[#[[1]] * #[[2]]&, {es, peaks}]ListPlot[es, Filling -> {1 -> Axis}, Epilog -> {PointSize[.02], Orange, Point[ps["Path"]]}]Quantity 对象列表的峰值:
data = {Quantity[9, "Feet"], Quantity[86, "Inches"], Quantity[27, "Meters"], Quantity[79, "Feet"], Quantity[90, "Feet"], Quantity[41, "Inches"], Quantity[99, "Inches"], Quantity[6, "Feet"], Quantity[38, "Feet"], Quantity[89, "Feet"], Quantity[53, "Feet"], Quantity[85, "Meters"], Quantity[92, "Meters"], Quantity[95, "Meters"], Quantity[49, "Feet"]};peaks = PeakDetect[data]ListPlot[{data, data peaks}, Joined -> {True, False}, PlotStyle -> {Automatic, Orange}]peaks30 = PeakDetect[data, Automatic, Automatic, Quantity[30, "Meters"]]ListPlot[{data, data peaks30}, Joined -> {True, False}, PlotStyle -> {Automatic, Orange}, PlotRange -> All]参数 (8)
v = {2, 1, 6, 5, 7, 4};
PeakDetect[v]v = {2, 1, 6, 5, 7, 4};
PeakDetect[v, 0]list = Table[ Sin[x] + RandomReal[.5{-1, 1}], {x, 0, 3 Pi, 0.1}];
ListLinePlot[list]Table[ListPlot[{list, list PeakDetect[list, σ]}, Joined -> {True, False}, PlotStyle -> {Automatic, Red}, Axes -> {True, False}], {σ, {1, 2, 4}}]values = {2, 1, 3, 5, 6, 6, 4, 3, 2, 4, 7, 3, 4, 2, 2, 1};peaks = PeakDetect[values, 1]ListLinePlot[
{values, GaussianFilter[values, {3, 1}], values peaks},
PlotStyle -> {Medium, Dashed, Red}, Joined -> {True, True, False}, Filling -> {3 -> 0}, PlotLegends -> {"original", "smoothed", "peaks"}
]v = {2, 1, 3, 5, 6, 6, 4, 3, 2, 3, 7, 2, 3, 4, 3, 2};PeakDetect[v, 0, 0]v = {2, 1, 3, 5, 6, 6, 4, 3, 2, 3, 7, 2, 3, 4, 3, 2};p = PeakDetect[v, 0, 3]ListLinePlot[
{v, ListConvolve[{1, -2, 1}, ArrayPad[v, 1, "Reversed"]], v p},
Joined -> {True, True, False}, PlotStyle -> {Automatic, Dashed, {Red, PointSize[0.03]}}, PlotRange -> All, Epilog -> {Dashed, Red, Line[{{0, -3}, {16, -3}}]}]list = {2, 1, 3, 5, 6, 6, 4, 3, 2, 4, 7, 1, 4, 2, 2, 1};peaks = PeakDetect[list, 0, 0, 5.1]ListPlot[{list, list peaks}, Joined -> {True, False}, PlotStyle -> {Automatic, {Red, PointSize[0.04]}}, Epilog -> Line[{{0, 5.1}, {20, 5.1}}]]list = {2, 1, 3, 5, 6, 6, 4, 3, 2, 4, 7, 1, 4, 2, 2, 1};peaks = PeakDetect[list, 2, 0, {5.1, 1}]ListPlot[{list, GaussianFilter[list, 1{3, 1}], list peaks}, Joined -> {True, True, False}, PlotStyle -> {Automatic, Dashed, {Red, PointSize[0.04]}}, Epilog -> Line[{{0, 5.1}, {20, 5.1}}]]选项 (1)
Padding (1)
默认情况下,使用 Padding->"Reflected":
values = {2, 1, 3, 5, 6, 6, 4, 3, 2, 4, 7, 3, 4, 2, 2, 1};peaks = PeakDetect[values, 0]ListPlot[{values, values peaks}, Joined -> {True, False}, Filling -> {2 -> 0}, FillingStyle -> Opacity[1]]peaks2 = PeakDetect[values, 0, Padding -> 4]ListPlot[{values, values peaks2}, Joined -> {True, False}, Filling -> {2 -> 0}, FillingStyle -> Opacity[1]]应用 (3)
data = WolframAlpha["sun spot", {{"SunspotsPartialTimeSeries:SpaceWeatherData", 1}, "TimeSeriesData"}][[All, 2]];ListLinePlot[data, PlotRange -> {10, All}]peaks = PeakDetect[data, 5, 0, 0];Total[peaks]ListLinePlot[data, Epilog -> {PointSize[Medium], Orange, Point[Transpose[{Range[Length[data]], data peaks}]]}, PlotRange -> {10, All}]a = LeastSquaresFilterKernel[{"Hilbert", 3}, 32];
data = Table[Abs@ListFourierSequenceTransform[a, x], {x, 0, π, .01}];
ListLinePlot[{data, data PeakDetect[data]}, PlotRange -> All]temp = WeatherData["Chicago", "MeanTemperature", {{2014, 11, 1}, {2014, 12, 31}, "Day"}]DateListPlot[temp]peaks = PeakDetect[QuantityMagnitude /@ temp["Values"], 0, 0, 0];用 MetaInformation 将峰值存起来,生成一个新的时间序列:
res = TimeSeries[temp, MetaInformation -> {"Events" -> EventSeries[QuantityMagnitude /@ (peaks * temp["Values"]), {temp["Dates"]}]}]DateListPlot[res, Epilog -> {PointSize[Medium], Point[Select[res["Events"]["Path"], (#[[2]] != 0)&]]}]可能存在的问题 (1)
data = {0, 0, 0, 0, 3, 7, 9, 8, 6, 5, 6, 8, 9, 7, 3, 0, 0, 0, 0};gdata = GaussianFilter[data, 3{3, 1}, Padding -> "Fixed"];ListLinePlot[{data, gdata}]peaks = PeakDetect[data, 3, Padding -> "Fixed"]ListPlot[{data, gdata, data peaks}, Joined -> {True, True, False}, Filling -> {3 -> 0}, FillingStyle -> Opacity[1]]相关指南
-
▪
- 特征检测
文本
Wolfram Research (2014),PeakDetect,Wolfram 语言函数,https://reference.wolfram.com/language/ref/PeakDetect.html (更新于 2021 年).
CMS
Wolfram 语言. 2014. "PeakDetect." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/PeakDetect.html.
APA
Wolfram 语言. (2014). PeakDetect. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/PeakDetect.html 年
BibTeX
@misc{reference.wolfram_2026_peakdetect, author="Wolfram Research", title="{PeakDetect}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/PeakDetect.html}", note=[Accessed: 01-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_peakdetect, organization={Wolfram Research}, title={PeakDetect}, year={2021}, url={https://reference.wolfram.com/language/ref/PeakDetect.html}, note=[Accessed: 01-November-2026]}