Matlab 的线性回归最小二乘法 求大神解答 200

已给的线性方程要求画出11个点%Linearfitwithleastsquareandleastabsoluteerrorslope=3;intercept=-2;abs... 已给的线性方程 要求画出11个点% Linear fit with least square and least absolute errorslope=3; intercept=-2;abscissa = (-5:5)’; m = length(abscissa);WhiteNoise = 5*randn(m,1);ordinates = slope*abscissa + intercept + WhiteNoise;GrossError=80;ordinates(6)=ordinates(6)+GrossError;ordinates(10)=ordinates(10)-GrossError;做了好几天了 没用过matlab 完全没有头绪 展开
 我来答
tianxiawulang
2016-10-04 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2549万
展开全部

使用最小二乘法拟合比较简单:

    x_r=[abscissa ones(size(abscissa))]\ordinates;
求出来即为题中的x和γ。如果不限方法,也可以使用多项式拟合:

    p = polyfit(abscissa, ordinates,1);

得到的结果是一致的(但二者分别是列向量和行向量)。

 

使用绝对值最小的拟合方法稍微复杂一些:

e = ones(size(abscissa));
f = [0; 0; e];
A1 = [-abscissa -e -eye(length(abscissa))];
b1 = -ordinates;
A2 = [abscissa e -eye(length(abscissa))];
b2 = ordinates;
c = linprog(f,[A1;A2],[b1;b2]);
求出来的即为所需的系数。

 

完整的代码如下(含绘图):

% Linear fit with least square and least absolute error
slope=3; intercept=-2;
abscissa = (-5:5)'; m = length(abscissa);
WhiteNoise = 5*randn(m,1);
ordinates = slope*abscissa + intercept + WhiteNoise;
GrossError=80;
ordinates(6)=ordinates(6)+GrossError;
ordinates(10)=ordinates(10)-GrossError;

 

x_r=[abscissa ones(size(abscissa))]\ordinates;
y2=[abscissa ones(size(abscissa))]*x_r;

e = ones(size(abscissa));
f = [0; 0; e];
A1 = [-abscissa -e -eye(length(abscissa))];
b1 = -ordinates;
A2 = [abscissa e -eye(length(abscissa))];
b2 = ordinates;
c = linprog(f,[A1;A2],[b1;b2]);
y1=[abscissa ones(size(abscissa))]*c(1:2);
plot(abscissa, ordinates, 'ro',abscissa, y2,'b-',abscissa, y1,'g--')
legend('Original data', 'Least L^2 error', 'Least L^1 error')
某次运行的结果如下(因数据为随机生成,每次运行结果不同):

对于L1最小拟合,也可以使用优化工具箱的函数fminunc来做:

objfun = @(x)sum( abs(abscissa*x(1)+x(2)-ordinates) );
c2=fminunc(objfun,[2 -2])

y3=[abscissa ones(size(abscissa))]*c2.';
plot(abscissa, ordinates, 'ro',abscissa, y2,'b-',abscissa, y1,'g--',abscissa, y3,'m:')
legend('Original data', 'Least L^2 error', 'Least L^1 error', 'fminunc')

拟合的结果可能与前述线性规划的结果不同(但目标函数基本都能达到最小),这也说明这个问题本质上是多极值的,存在多个局部最优点。

富港检测技术(东莞)有限公司_
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式