寻峰算法matlab
时间: 2024-12-29 16:19:51 浏览: 14
### 寻峰算法在MATLAB中的实现
#### 定义峰值检测函数
为了识别信号中的峰值,可以定义一个简单的峰值检测函数。该函数会遍历输入数据并标记满足特定条件的数据点作为峰值。
```matlab
function peaks = find_peaks(data, threshold)
% 初始化输出数组为空
peaks = [];
% 遍历数据集寻找局部最大值
for i = 2:length(data)-1
if data(i) > data(i-1) && data(i) >= data(i+1) ...
&& data(i) > threshold
% 如果当前点大于前后相邻两点且超过阈值,则记录为峰值位置
peaks(end+1) = i;
end
end
end
```
此代码片段展示了如何创建自定义`find_peaks`函数来定位高于给定阈值的局部极大值[^3]。
#### 使用内置工具箱功能
除了编写自己的峰值检测器外,还可以利用MATLAB提供的Signal Processing Toolbox中更高级别的命令来进行更加复杂的分析:
```matlab
% 加载测试数据
load('noisy_signal.mat');
% 调用findpeaks函数自动发现所有显著波峰
[pks,locs]=findpeaks(noise_data,'MinPeakHeight',0.5);
% 绘制原始曲线及其上找到的各个极值点
plot(time,noisedata);
hold on;
stem(locs,pks,'r','filled');
title(['Found ',num2str(length(pks)),' Peaks']);
xlabel('Time (sec)');
ylabel('Amplitude');
legend({'Original Signal','Detected Peaks'});
grid minor;
```
上述脚本说明了通过调用MATLAB自带的`findpeaks()`方法快速高效地标记出时间序列里重要的波动特征[^4]。
阅读全文