一维数据中位值平均滤波法MATLAB代码
简介
中位值平均滤波法又称防脉冲干扰平均滤波法,是算术平均值滤波法和中值滤波法结合。可有效去除脉冲噪声。
MATLAB程序
程序已封装成函数,可以直接调用。
input_y为输入一维数组,T为采样点数,当T=3时,它便是中值滤波算法。
% 中位值平均滤波法(又称防脉冲干扰平均滤波法)
% 算术平均值滤波法和中值滤波法结合
function output_y = MedianAverageFilter(input_y, T)
%读取数据长度
n=length(input_y);
%数据转移
a=input_y;
t=floor(T/2);
if mod(T,2)
%奇数
for j = 1:t
b(j) = a(j);
b(n-j+1) = a(n-j+1);
end
if T == 3
for i = 2:n-1
s=a(i-1:i+1);
z=sort(s);
b(i) = z(2);
end
else
for i = t+1:n-t
s=a(i-t:i+t);
sort(s);
b(i) = mean(s(2:T-2));
end
end
else
%偶数
for j = 1:t-1
b(j) = a(j);
end
for j = 1:t
b(n-j+1) = a(n-j+1);
end
for i = t:n-t
s=a(i-t+1:i+t);
sort(s);
b(i) = mean(s(2:T-1));
end
end
output_y = b;
end