帮助中心帮助中心
一维中位数滤波
y = medfilt1(x)
y = medfilt1(x,n)
y = medfilt1(x,n,blksz,dim)
y = medfilt1(x,n,[],dim)
y = medfilt1(___,nanflag,padding)
y = medfilt1(x) 将三阶一维中位数滤波器应用于输入向量 x。该函数将端点以外的信号视为 0。输出 y 具有与 x 相同的长度。
y
x
y = medfilt1(x,n) 将 n 阶一维中位数滤波器应用于 x。
n
示例
y = medfilt1(x,n,blksz,dim) 或 y = medfilt1(x,n,[],dim) 指定滤波器沿其运算的维度 dim。blksz 是向后兼容所必需的,因此被忽略。
dim
blksz
y = medfilt1(___,nanflag,padding) 使用上述语法中的任何输入参量指定如何在每个段中处理 NaN 值。此语法还指定 padding,即在信号边缘执行的滤波类型。
nanflag
padding
NaN
nanflag 和 padding 可以出现在函数调用中 x 后的任何位置。
全部折叠
生成一个正弦信号,采样率为 100 Hz,采样时间持续 1 秒。添加更高频率的正弦波对噪声进行仿真。
fs = 100; t = 0:1/fs:1; x = sin(2*pi*t*3)+0.25*sin(2*pi*t*40);
使用一个 10 阶中位数滤波器对信号进行平滑处理。绘制结果。
y = medfilt1(x,10); plot(t,x,t,y) legend('Original','Filtered') legend('boxoff')
生成一个由不同频率的正弦波组成的双通道信号。将尖峰放在随机的位置。使用 NaN 随机添加缺失采样。重置随机数生成器以获得可重现的结果。绘制信号。
rng('default') n = 59; x = sin(pi./[15 10]'*(1:n)+pi/3)'; spk = randi(2*n,9,1); x(spk) = x(spk)*2; x(randi(2*n,6,1)) = NaN; plot(x)
使用 medfilt1 和默认设置对信号进行滤波。绘制滤波后的信号。默认情况下,滤波器将 NaN 赋给任何具有缺失采样的段的中位数。
medfilt1
y = medfilt1(x); plot(y)
转置原始信号。再次对其进行滤波,指定函数沿行工作。计算中位数时排除缺失采样。如果将第二个参量留空,则 medfilt1 使用默认滤波器阶数 3。
y = medfilt1(x',[],[],2,'omitnan'); plot(y')
该函数不能对只包含 NaN 的段赋值。增大段长度以解决此问题。此更改会同时更彻底地删除离群值。
y = medfilt1(x,4,'omitnan'); plot(y)
默认零填充导致函数低估边缘处的信号值。通过使用递减窗计算端点的中位数来减轻这种影响。
y = medfilt1(x,4,'omitnan','truncate'); plot(y)
输入信号,指定为实数值向量、矩阵或 N 维数组。
数据类型: single | double
single
double
一维中位数滤波器的阶数,指定为正整数标量。
当 n 是奇数时,y(k) 是 x(k-(n-1)/2:k+(n-1)/2) 的中位数。
y(k)
x(k-(n-1)/2:k+(n-1)/2)
当 n 是偶数时,y(k) 是 x(k-n/2:k+(n/2)-1) 的中位数。在这种情况下,此函数对数字进行排序,并取排序列表中两个中间元素的平均值。
x(k-n/2:k+(n/2)-1)
示例: 如果 n = 11,则 y(k) 是 x(k-5:k+5) 的中位数。
x(k-5:k+5)
示例: 如果 n = 12,则 y(k) 是 x(k-6:k+5) 的中位数。
x(k-6:k+5)
数据类型: double
要沿其滤波的维度,指定为正整数标量。默认情况下,该函数沿 x 的第一个非单一维度进行运算。特别是,如果 x 是矩阵,该函数将对其列进行滤波,以使 y(:,i) = medfilt1(x(:,i),n)。
y(:,i) = medfilt1(x(:,i),n)
'includenan'
'omitnan'
NaN 条件,指定为 'includenan' 或 'omitnan'。
'includenan' - 返回滤波后的信号,因此任何包含 NaN 的段的中位数也是 NaN。
'omitnan' - 返回滤波后的信号,因此任何包含 NaN 的段的中位数是非 NaN 值的中位数。如果一个段的所有元素均为 NaN,则结果是 NaN。
'zeropad'
'truncate'
端点滤波,指定为 'zeropad' 或 'truncate'。
'zeropad' - 将端点以外的信号视为零。
'truncate' - 当到达信号边缘时,计算较小段的中位数。
滤波后的信号,以实数值向量、矩阵或 N 维数组形式返回。y 的大小与 x 相同。
如果您有 Image Processing Toolbox™ 软件的许可证,您可以使用 medfilt2 (Image Processing Toolbox) 函数来执行二维中位数滤波。
medfilt2
[1] Pratt, William K. Digital Image Processing. 4th Ed. Hoboken, NJ: John Wiley & Sons, 2007.
用法说明和限制:
可变大小输入矩阵或 N 维数组在运行时不能变为行向量。
输入 dim、nanflag 和 padding 必须为编译时常量。
在 R2006a 之前推出
filter | hampel | median | movmedian | sgolayfilt
filter
hampel
median
movmedian
sgolayfilt
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office