资源简介

线性拟合的matlab仿真代码,包含数据点的收集、一般最小二乘算法、正交回归算法,画图等。其中数据点的收集还包括曲线的数据点收集。

资源截图

代码片段和文件信息

%% 普通最小二乘法
%注释
%%%%%%%%% 原始点数据 %%%%%%%%%
% x_orgy_org原始直线上的点
% xy原始直线上随机取得点
% x_randy_rand原始直线上随机取的点加上噪声后

%%%%%%%%% 结果 %%%%%%%%%
% theta_1,使用一般最小二乘,场景1,结果
% theta_2 使用一般最小二乘,场景2,结果
% k_1c_1 使用正交回归,场景1,结果
% k_2c_2 使用正交回归,场景2,结果
% k1c1 使用梯度下降,场景1,结果
% k2c2 使用梯度下降,场景2,结果

% x_11y_11一般最小二乘,场景1的数据点得出的结果,作图用的点
% x_12y_12一般最小二乘,场景2的数据点得出的结果,作图用的点
% x_21y_21正交回归,场景1的数据点得出的结果,作图用的点
% x_22y_22正交回归,场景2的数据点得出的结果,作图用的点
% x_31y_31梯度下降,场景1的数据点得出的结果,作图用的点
% x_32y_32梯度下降,场景2的数据点得出的结果,作图用的点

%%%%%%%%% 中间过程 %%%%%%%%%
% x_m_1 y_m_1数据1中,x和y的均值
% x_m_2 y_m_2数据2中,x和y的均值



clear all
clc
close all

%% 加载数据点
load x_org.mat;
load y_org.mat;
load x.mat;
load y.mat;
load x_rand.mat;
load y_rand.mat;

%% 使用数据1
X=[x;ones(1length(x))];
theta_1=(X*X‘)^(-1)*X*y_rand‘;


%% 使用数据2
X=[x_rand;ones(1length(x_rand))];
theta_2=(X*X‘)^(-1)*X*y_rand‘;


%% 作图
for i=1:100
    x_11(i)=-10+(i-1)*0.2;
    y_11(i)=theta_1(1)*x_11(i)+theta_1(2);
end
figure
plot(xy_rand‘y.‘)
axis([-1515-2525])
hold on
plot(xy‘b‘);
hold on
plot(x_11y_11‘g-‘);

for i=1:100
    x_12(i)=-10+(i-1)*0.2;
    y_12(i)=theta_2(1)*x_12(i)+theta_2(2);
end
figure
plot(x_randy_rand‘y.‘)
axis([-1515-2525])
hold on
plot(xy‘b‘);
hold on
plot(x_12y_12‘g-‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1874  2019-07-02 10:32  al2_ortho.m

     文件       2250  2019-07-02 10:32  al3_GradDecnt.m

     文件        658  2019-07-02 10:32  points.m

     文件       1612  2019-07-02 10:32  al1_OLS.m

----------- ---------  ---------- -----  ----

                 6394                    4


评论

共有 条评论