2016-02-28 58 views
0

我会举例说明我的问题MATLAB:如何在没有填充的情况下将窗口滑过矩阵?

我有一个3x100的矩阵,我想在它上面滑动一个3x3滤镜。 但是,我不希望任何imfilter会使用的填充(例如X,对称,复制等),这会产生3x100输出。 我宁愿只在存在真实数据时应用滑动窗口,以使我的输出为1x(100-4)。

什么是最优雅的(露趾)方式在matlab中做到这一点?

+0

你是否在'imfilter'中使用''conv''选项(或其他)?你不能只用'C = imfilter(A,B);''C = C(2,2:end-1);'?对于这样的小尺寸,这可能非常有效。 – horchler

+0

我认为你的意思是你的输出是1×98,而不是1×96 – Suever

回答

1

您可以使用内置的conv2函数和'有效'作为形状参数,它只会在过滤器和数据之间有完全重叠时提供结果。

filtered = conv2(data, filter, 'valid'); 
+0

FYI,'imfilter'使用[相关而不是卷积](http://dsp.stackexchange.com/questions/12684/difference-between - 相关和卷积图像)默认情况下,因此我的问题在上面的评论。 – horchler

相关问题