matlab实现滑动平均滤波
时间: 2024-10-22 17:26:14 浏览: 69
在MATLAB中,滑动平均滤波是一种常见的信号处理技术,用于平滑数据序列并减少噪声的影响。其基本思想是取一段连续的数据点作为窗口,计算窗口内数据的算术平均值作为当前时刻的估计值。以下是使用MATLAB实现简单滑动平均滤波的基本步骤:
1. 定义窗口大小(W):这个数字决定了滑动窗口内包含多少个数据点。
2. 创建滑动数组(Window):这是一段预先填充NaN的向量,长度等于窗口大小。
3. 初始化位置变量(Index):初始时设为0,表示从第一个元素开始滑动。
4. 遍历输入数据(InputSignal),每次移动窗口并在新位置上计算平均值:
- 将当前位置的数据添加到滑动数组的起始位置,并移除尾部的NaN值。
- 计算滑动窗口内数据的平均值(可以用`mean`函数)。
- 更新当前估计值(FilteredSignal)。
5. 输出滑动平均滤波后的信号(FilteredSignal)。
示例代码如下:
```matlab
% 输入信号
InputSignal = randn(100); % 假设这是一个100点的随机信号
% 设置窗口大小
WindowSize = 5; % 例如,采用5点滑动平均
% 初始化滑动数组和索引
FilteredSignal = NaN(size(InputSignal));
Index = 1;
% 滑动平均滤波
while Index <= size(InputSignal)
Window = InputSignal(Index Index+WindowSize-1);
FilteredSignal(Index) = mean(Window(~isnan(Window)));
% 移动窗口
Index = Index + 1;
end
% 显示原始信号和滤波结果
plot(InputSignal, 'b', 'LineWidth', 1.5), hold on
plot(FilteredSignal, 'r', 'LineWidth', 1.5)
legend('Original Signal', 'Filtered Signal')
xlabel('Sample Index'), ylabel('Amplitude')
hold off
```
阅读全文