我有一个分布在非等距1D空间的数据,我需要用高斯滤波器对其进行卷积,
gaussFilter = sqrt(6.0/pi*delta**2)*exp(-6.0*x**2 /delta**2);
其中delta
是常量,x
对应于空格。
任何人都可以暗示如何进行良好的整合(第二顺序),因为数据不是等间隔处理有限结束吗?我打算在Fortran中编写代码,但也欢迎使用Matlab示例。
答案 0 :(得分:1)
使用它:
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
答案 1 :(得分:0)
找到有用的东西。 虽然不确定这是否非常准确,因为集成(trapz)是第一顺序。
function [fbar] = gaussf(f,x,delta )
n = length(f);
fbar = zeros(n,1);
for i=1:n;
kernel = sqrt(6/(pi*delta^2))*exp(-6*((x - x(k))/delta).^2);
kernel = kernel/trapz(x,kernel);
fbar(i) = trapz(x,f.*kernel);
end
end