将数据拟合为非线性函数的线性组合

时间:2017-06-09 09:32:00

标签: matlab linear-regression

考虑一下:

clear all
clc
close all

x = 0:0.1:10;
y = 2.*sin(x) + 0.1.*rand(1,length(x));
mdl = fitlm(x,y);
plotAdded(mdl)

未知参数是2sin(x)的系数,即+1。所以,模型是线性的,但是,“fitlm”在这里不起作用,因为它试图将数据拟合到像“a * x + b”这样的模型。我希望它能够将数据拟合到像asin(x)+ b这样的模型中; a和b是未知的。如何将数据拟合为非线性函数或自定义函数的线性组合。我需要一个适用于其他功能的解决方案,例如Cos,Log,Exp或用户定义的函数。

我想通过统计工具箱和编程方式进行此操作。

1 个答案:

答案 0 :(得分:0)

线性模型仅允许线性函数。但是你可以像这样做自定义函数:

mdl = fitlm(sin(x),y);

看起来不错:

The result