-1

我有一个信号,它是一个数组(长度为 m),我有一个盐和纸类型的噪音。我已经对其应用了低通滤波器(LPF)并获得了非常好的结果。但是我想对信号应用中值滤波器并与应用 LPF 的结果进行比较)。

我知道函数是medfilt1(X,N),但不知道 N 代表什么。

函数是:y = medfilt1(X,X,BLKSZ,DIM)我想将它应用到一个数组raw_Signal <5000x1double>

对于单曲 X raw_Signal,我使用了

N=3 %the default number
BLKSZ= 5 
DIM = 1 %apply the filter to the rows

该函数的输出是一个滤波后的信号,但是我对输入N不是很了解。谁能用一个例子向我解释一下。

4

3 回答 3

1

点 X 上的一维中值滤波器通过获取N/2-1相邻值、对它们进行排序并返回中值来工作。一个实际的例子:

x=[1,1,1,2,3,4,1,1,1]

x(4), N=3 => [1,(2),3] => median(x(4)) = 2

x(4), N=5 => [1,1,(2),3,4] => median(x(4)) = 2

x(6), N=3 => [3,4,1] => [1,(3),4] median(x(6)) = 3

x(6), N=5 => [2,3,4,1,1] => [1,1,(2),3,4] => median(x(6)) = 2

希望有帮助。

于 2013-07-19T13:20:03.813 回答
1

N 是用于计算每个中位数的样本数。因此,如果您的信号是 [abcdefg],N 是 3,那么第二个输出是中位数([abc])。第三个是中位数([bcd])等。第一个输出有点问题,因为您会尝试使用不存在的样本,所以它只是中位数([0 ab]);

手摇直觉建议如下(不要将其视为精确描述):通常,N 越大,过滤越多。考虑一下:如果您在任何 3 个样本中只有一个噪声点(离群值),那么其他 2 个样本的中值将是一个非常好的估计值,并且所有噪声都被过滤掉了。如果您在 3 个样本的特定组中有 2 个噪声点,那么中值将最终选择 2 个噪声点中的 1 个。N=5 会抓住它,但会更多地扰乱你的非嘈杂点。

不要惹BLKSZ。正如帮助文本所说,只有在内存不足时才使用它,如果是,请选择 BLKSZ,使 BLKSZ x N x 8(工作矩阵的大小,以字节为单位)介于 1MB 和 100MB 之间。否则,将其排除在外。并且由于您有一个向量,因此假定 DIM=1,因此您只需要 Y = medfilt1(X,N)。

于 2013-07-19T13:14:59.653 回答
0

它是过滤器的长度。一般来说,第k个值是前N/2个值和后N/2个值的中位数。

即,

对于 n 奇数,y(k) 是 x(k-(n-1)/2:k+(n-1)/2) 的中位数。

对于 n 偶数,y(k) 是 x(kn/2), x(k-(n/2)+1), ..., x(k+(n/2)-1) 的中位数。在这种情况下, medfilt1 对数字进行排序,然后取 n/2 和 (n/2)+1 个元素的平均值

于 2013-07-19T13:13:57.307 回答