function flux_out = meanfilter(lamda, flux, w)
% Author:shizhixin
% Email:szhixin@gmail.com
% Blog:http://blog.csdn.net/shizhixin
% Date:2012-03-11
% Function:对一维向量中值滤波
% Note:输入lamda,flux必须维度一致,并且为一维向量,
% 输出flux_out为一维列向量
% w是滤波窗口的半径,比如w=2,
% 则选取的是当前点的前后各两个点一共五个点做均值,
% w必须大于0且小于整个维度的一半
% 左右边界点不做任何处理
% Example:
% a = [1 2 3 4 5 6 7 8 9]
% b = [2 4 7 1 0 4 6 2 4]
% c = meanfilter(a,b,2)
% out:c =[ 2
% 4
% 2.8
% 3.2
% 3.6
% 2.6
% 3.2
% 2
% 4]
%判断lamda flux的维数是否一致
dim_flux = length(flux);
dim_lamda = length(lamda);
if dim_flux ~= dim_lamda
disp 'the dims of lamda and flux must be the same!'
return;
end
%判断w是否超出整个点数一半,w表示滤波窗口半径
if w>floor((dim_flux-1)/2)
disp 'w input error!It shoule be [1...floor((dim_flux-1)/2]!'
return
end
flux_out = zeros(dim_flux, 1);
for i=1:dim_flux
if i>w & i<=dim_flux-w
flux_out(i) = mean(flux((i-w):(i+w)));
else
flux_out(i) = flux(i);
end
end
end%function
对一维向量中值滤波
最新推荐文章于 2024-08-15 16:24:13 发布