三值平均滤波的MATLAB实现
代码实现
% 三值平均滤波
x=[1:100];y1=5*sin((0.03*pi)*x);
N = wgn(1,100,0.1);
z1=N+y1;
signal = z1;
k=1;
m=1; % m=6,则为十三值平均滤波
len = 2*m + 1; % 长度3
signal_filered = [];
t = [];
for i=m+1:length(signal)-m
t(k) = i;
% 每个像素点取i-m至i+m个邻域点
signal_filered(k) = mean(signal(i-m:i+m)); % mean - 数组的均值
k = k+1;
end
s = signal_filered;
% hold on 是当前轴及图形保持而不被刷新,准备接受此后将绘制
% hold off 使当前轴及图形不再具备被刷新的性质
figure; plot(t,s,'-dr');hold on;
plot(x,z1,'-x');hold on;
plot(x,y1,'-k');title('三值平均滤波');
代码执行结果: