matlab 写一段平滑函数
时间: 2023-10-18 17:05:47 浏览: 146
【matlab代码】二维sinc函数的图像
5星 · 资源好评率100%
以下是一个简单的平滑函数,它使用移动平均方法平滑输入信号。
```matlab
function y = smooth(x, window_size)
% 移动平均平滑信号
% x: 输入信号
% window_size: 窗口大小,必须为正奇数
if mod(window_size, 2) == 0 || window_size <= 0
error('窗口大小必须为正奇数');
end
half_win = (window_size - 1) / 2;
x = [ones(half_win, 1) * x(1); x; ones(half_win, 1) * x(end)];
y = zeros(size(x));
for i = (half_win + 1):(length(x) - half_win)
y(i) = mean(x(i-half_win:i+half_win));
end
y = y((half_win+1):(end-half_win));
end
```
这个函数的输入是一个信号 `x` 和一个窗口大小 `window_size`,输出是平滑后的信号 `y`。该函数首先检查窗口大小是否是正奇数,然后将信号的头和尾分别填充了一半窗口大小的数据,以避免边缘效应。最后,它在每个点上计算该点周围窗口大小内的平均值作为平滑后的值。
阅读全文