高斯拟合曲线与多个峰值

699(30天)
米娜
米娜 2018年7月21日
评论道: 图像分析 2023年5月3日在46
我有一个曲线有一些山峰(这里的图连接)。我想适应几个高斯。我怎么能这样做呢?
1评论
dpb
dpb 2018年7月21日
有预构建模型的曲线拟合工具箱如果你有…

登录置评。

答案(3)

图像分析
图像分析 2020年10月12日
附加是一个演示如何适应任何指定数量的高斯分布噪声数据。这里是一个例子,我创建了一个信号从6组件高斯函数的加法,然后添加噪声的总结曲线。输入数据是虚线(上大多数曲线),和它认为的高斯函数和适合最好所示虚线下面的纯色曲线曲线。
这是程序的主要部分:
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
%重任做在这里:
%运行优化
(参数,fval、国旗、输出)= fminsearch(@(λ)(fitgauss(λ,tFit y)), startingGuesses,选项);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
剩下的只是设置/初始化和绘图代码。
7评论
图像分析
图像分析 2023年5月3日在46
@YI-CHEN常 就去掉线,使用y_data无处不在而不是y。
如果你有任何其他问题,然后把数据和代码阅读它的回形针图标后 读到这 :
把你的数据和m文件在一个新的问题,不在这里。

登录置评。


图像分析
图像分析 2018年7月21日
高斯混合模型
高斯混合模型(GMM)是由k多元正态密度组件,k是一个正整数。每个组件都有一个采用的意思是(d是一个正整数),d-by-d协方差矩阵和混合比例。混合比例j决定了人口的比例由组件j, j = 1,…, k。
你可以使用统计和机器学习的GMM工具箱™函数fitgmdist通过指定k和通过提供X,一个n-by-d矩阵的数据。X的列对应于预测、特性或属性,行对应于观测或例子。默认情况下,fitgmdist适合全协方差矩阵中不同组件(或非共享)。
13个评论
里克
里克 2020年10月12日
国旗的评论 气路:
嗨,这个演示似乎是完美的。你能告诉我如何适应这样的方程。我使用“合适”的曲线拟合箱,拟合的结果是很可怕的。

登录置评。


图像分析
图像分析 2018年7月24日
编辑:图像分析 2020年11月25日
这样做的方法之一是建立两个高斯分布的和一个偏移量和线性斜坡。然后您可以使用fitnlm,和你最好的猜测的参数。看代码:
%使用fitnlm()以适应非线性模型(两个高斯分布在斜坡的总和)通过噪声数据。
%需要统计和机器学习的工具箱,这是fitnlm()包含。
%初始化步骤。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
%建立X坐标从0到20每0.5单位。
X = linspace (0、80、400);
mu1 = 10;%的意思是高斯函数的中心。
sigma1 = 3;%标准差。
mu2 = 50;%的意思是高斯函数的中心。
sigma2 = 9;%标准差。
%定义函数X值服从。
= 6我选择%任意样本值。
b = 35
c = 25
m = 0.1
Y = X + m * + b * exp (- (X - mu1) ^ 2 / sigma1) + c * exp (- (X - mu2) ^ 2 / sigma2);%得到一个向量。没有噪音Y。
%添加噪声Y。
Y = Y + 1.2 * randn(1、长度(Y));
%现在我们有嘈杂的训练数据,我们可以发送到fitnlm ()。
%画出嘈杂的初始数据。
情节(X, Y,“b”。,“线宽”2,“MarkerSize”15);
网格;
% X和Y转换成一个表,即形式fitnlm()喜欢输入数据。
台=表(X, Y);
%的模型定义为Y = a + exp (- b * x)
%注意的“x”modelfun有关大x和Y。
% x((: 1)实际上是x, x(:, 2)实际上是Y -第一和第二列的表。
modelfun = @ (b, x) b (1) + (2) * x + b (3) * exp (- b (x (: 1) - (4)) ^ 2 / b (5)) + b (6) * exp (- b (x (: 1) - (7)) ^ 2 / b (8));
beta0 =[3 6, 0.1, 35岁,10日,25日,50岁,9];%的猜测值开始。把你最好的猜测。
%现在,下一行是实际的模型计算。
mdl = fitnlm(资源描述、modelfun beta0);
%现在模型创建和系数进行确定。
%耶! ! ! !
%从模型中提取系数的值对象。
%的实际系数是“估计”列的“系数”表的模式的一部分。
系数= mdl.Coefficients {:,“估计”}
%让我们做一个健康,但是让我们得到更多的点合适,不仅仅是广泛的训练点,
%,这样我们会更平滑的曲线。
X = linspace (min (X)、马克斯(X), 1920);%我们用1920点,这将适合在高清电视屏幕上每个像素的一个示例。
%创建平滑/退化数据使用模型:
yFitted系数=系数(1)+ (2)(3)* * X +系数经验值(- (X -系数(4))。(5))+ ^ 2 /系数系数(6)* exp (- (X -系数(7))。^ 2 /系数(8));
%现在做完了,我们可以画出平滑模型作为红线经历吵闹的蓝色标记。
持有;
情节(X, yFitted,的r -,“线宽”2);
网格;
标题(的指数回归fitnlm ()”,“字形大小”、字形大小);
包含(“X”,“字形大小”、字形大小);
ylabel (“Y”,“字形大小”、字形大小);
legendHandle =传奇(“吵了Y”,'拟合Y ',“位置”,“东北”);
legendHandle。字形大小= 25;
%设置图属性:
%全屏放大图。
集(gcf,“单位”,“归一化”,“OuterPosition”,(0 0 1 1));
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“NumberTitle”,“关闭”)
5个评论
图像分析
图像分析 2021年2月27日
我没有做二维。你会尝试在二维和试着去适应它。你也可以这样做。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!