Matlab 求解高斯和的尺度空间

Matlab 求解高斯和的尺度空间,matlab,signal-processing,curve-fitting,gaussian,Matlab,Signal Processing,Curve Fitting,Gaussian,我试图使用尺度空间实现将n条高斯曲线拟合到噪声时间序列数字信号测量电压的峰值。 为了测试它,我创建了以下三个高斯的样本和,噪声为0.2*rand,对不起,没有图片,我是新来的 amp = [2; 0.9; 1.3]; mu = [19; 23; 28]; sigma = [4.8; 1.3; 2.5]; x = linspace(1,50,1000); for n=1:3, y(n,:) = A(n)*exp(-(x-B(n)).^2./(2*C(n)^2)); end noisysignal

我试图使用尺度空间实现将n条高斯曲线拟合到噪声时间序列数字信号测量电压的峰值。 为了测试它,我创建了以下三个高斯的样本和,噪声为0.2*rand,对不起,没有图片,我是新来的

amp = [2; 0.9; 1.3];
mu = [19; 23; 28];
sigma = [4.8; 1.3; 2.5];
x = linspace(1,50,1000);
for n=1:3, y(n,:) = A(n)*exp(-(x-B(n)).^2./(2*C(n)^2)); end
noisysignal = y(1,:) + y(2,:) + y(3,:) + 0.2*rand(1,numel(x))
我发现这篇文章是由user355856发布的! 我相信我的代码生成了正确的结果,将过零点绘制为高斯滤波器分辨率σ的函数,但我有两个问题。首先,似乎还需要另一个拟合程序来确定拱截距的近似位置,以近似初始峰值σ和μ值。第二个是比例空间图的边缘有大量的拱门,这些拱门肯定与任何山峰都不对应。我不知道如何有效地筛选出这些。最后一件事是,在计算二阶导数中心有限差分时,使用了50的间距,因为太多的特征被破坏,而更少的结果是零交叉森林。有没有更好的过滤方法来控制高斯峰尾的随机过零

function [crossing] = scalespace(x, y, sigmalimit)
figure; hold on; ylim([0 sigmalimit]);
for sigma = 1:sigmalimit %
yconv = convkernel(sigma, y); %convolve with kernel
xconv = linspace(x(1), x(end), length(yconv));
yconvpp = d2centralfinite(xconv, yconv, 50); % 50 was empirically chosen
num = 0;
for i = 1 : length(yconvpp)-1
    if sign(yconvpp(i)) ~= sign(yconvpp(i+1))
        crossing(sigma, num+1) = xconv(i);
        num = num+1;
    end
end
plot(crossing(sigma, crossing(sigma, :) ~= 0),...
     sigma*ones(1, numel(crossing(sigma, crossing(sigma, :) ~= 0))), '.');
end

function [yconv] = convkernel(sigma, y)
t = sigma^2;
C = 3; % for kernel truncation
M = C*round(sqrt(t))+1;
window = (-M) : (+M);
G = zeros(1, length(window));
G(:) = (1/(2*pi()*t))*exp(-(window.^2)./(2*t));
yconv = conv(G, y);
这是我的第一篇文章,我为风格上的任何问题提前道歉。我对编程相当陌生,因此,如果您对本问题中提供的编程风格或信息有任何建议,我将不胜感激。我还通读了Amro关于!如果有人认为这是一种更有效的方法来模拟数字信号中的多个高斯


谢谢大家!

您可以在一些外部网站上发布图片,然后我们可以为您上传到这里。啊,谢谢!这是由我的代码创建的原始和