median_smooth.m

来自「这个帖子中我想讨论的是移动窗口多项式最小二乘拟和平滑方法」· M 代码 · 共 50 行

M
50
字号
function y=median_smooth(x,width)

%   Robust median smooth method.
%
%   y=median_smooth(x,width)
%   x --------  Input data ,it should be a vector.
%
%   width ----  Smoothing window width.
%
%   DNP. 2007.12.17


y=[];

if nargin <2
    error('Not enough inputs.');
    return
elseif nargin > 2
    error('Too many inputs!');
    return
end

[r c]=size(x);
if ~any([r c]==1)
    error('Input data x should be a vetor.');
    return
end

if width<=0
    y=x;
    return
end

if mod(width,2)==0
    m=width/2;
else
    m=(width-1)/2;
end

% y=[];
for i=1:length(x)
    if i-m <= 0
        y(i)=x(i);
    elseif length(x)-i <= m
        y(i)=x(i);
    else
        y(i)=median(x(i-m:i+m));
    end
end
       

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?