当前位置:文档之家› 最小二乘法 矩阵形式实现 Matlab代码

最小二乘法 矩阵形式实现 Matlab代码

%最小二乘法的矩阵形式
function [coe, str, preZ] = LMSMatrix()

load data.mat;
%dataX为n*(p-1),dataY为n*1,dataZ为n*(p-1)

firstList = ones(size(dataY, 1), 1);
newX = [firstList dataX];
firstZ = ones(size(dataZ, 1), 1);
newZ = [firstZ dataZ];
%在dataX的前面加上一列1

transpositionNewX = newX'; %X'
tempX = transpositionNewX * newX; %X'X
if det(tempX) ~= 0 %XX'是非奇异的
str = ' X“X是非奇异的,可以求逆! ';
invX = inv(tempX); %(XX')的逆
coe = invX * transpositionNewX * dataY; %b=(X'X)逆X'Y
%temp = tempX \ transpositionNewX; %用A\b代替A的逆*b提高效率
%coe = temp * dataY;
else if det(tempX) == 0
str = ' X“X是奇异的,无法求逆! ';
coe = 0;
end
end

%预测数据
preZ = newZ * coe; %y=xb

str
coe
preZ

相关主题
文本预览
相关文档 最新文档