MATLAB实现任意函数曲线拟合(高斯曲线为例)
·
高斯曲线拟合
matlab实现多项式拟合的函数相对比较简单,且容易记忆,但是复杂曲线的拟合就比较繁杂,比如高斯曲线,也叫正态分布函数,线上做个笔记,大家共勉。
clc;clear;
close all;
y = [1,1,1,3,7,8,7,3,1,1,1]; % 待拟合向量
len = length(y); % 数据长度
x = 1:1:len; % 时间轴坐标
figure,plot(x,y);
xlabel('Position / s');
ylabel('Intencity / cd');
title('Input Signal');
% 定义初始参数,matlab在此基础上优化,初始参数太差会导致优化效果很差
Amptittude = 7; % 定义初始幅值a
pos = 6; % 定义中心横坐标b
standerror = 2; % 定义标准差c
Da = 1; % 定义最低纵坐标d
gaussEqn = 'a*exp(-((x-b)/c)^2)+d'; % 高斯方程
startPoints = [Amptittude pos standerror,Da]; % 初始参数矩阵
para1 = fit(x',y',gaussEqn,'Start', startPoints); % 拟合命令(x、y必须是列向量)
hold on,plot(para1,x,y); % 绘图命令
a = getfield(para1,'a'); % 获取指定拟合参数a
拟合前后曲线对比结果如下。
更多推荐
已为社区贡献3条内容
所有评论(0)