【发布时间】:2018-08-23 04:56:25
【问题描述】:
为了平滑我的数据,我在 MATLAB 中使用高斯函数与我的数据进行卷积。但有一个细节不容忽视。比如我的原始数据是“DATA”,平滑后的数据是“SM_DATA”,一个简单的matlab代码是:
gauss=gausswin(100);
gauss_normalize=gauss/sum(gauss);
SM_DATA=conv(DATA,gauss,'same');
图像会是这样的:
但是,如果我删除第二行“gauss_normalize=gauss/sum(gauss);”图像会有很强的DC,见
谁能帮助解释为什么我应该使用 gauss_normalize 使用简单但专业的语言进行卷积?此外,这不是典型的标准化,对吧?因为典型的归一化会除以最大值而不是序列的总和,因此数据是从 0 到 1。
【问题讨论】:
-
这是由于内核的离散化。最终,如果您的数据全部为
1并且您应用内核,那么您期望全部为1。为了确保发生这种情况,您需要确保内核在应用于所有1的数据时返回1。直接的方法是规范化内核。
标签: matlab filtering signal-processing gaussian