我有一个分布在非等距一维空间中的数据,我需要用高斯滤波器对其进行卷积,
gaussFilter = sqrt(6.0/pi*delta**2)*exp(-6.0*x**2 /delta**2);
其中 delta
是一个常量,x
对应于空格。
任何人都可以提示如何执行良好的集成(二阶),因为数据不是等间距的以处理有限端吗?我打算用 Fortran 编写代码,但也欢迎使用 Matlab 示例。
最佳答案
使用这个:
function yy = smooth1D(x,y,delta)
n = length(y);
yy = zeros(n,1);
for i=1:n;
ker = sqrt(6.0/pi*delta^2)*exp(-6.0*(x-x(i)).^2 /delta^2);
%the gaussian should be normalized (don't forget dx), but if you don't want to lose (signal) energy, uncomment the next line
%ker = ker/sum(ker);
yy(i) = y'*ker;
end
end
关于matlab - 非等距数据的一维高斯滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674981/