1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab三个自变量一个因变量拟合

matlab三个自变量一个因变量拟合

时间:2022-06-04 02:46:05

相关推荐

matlab三个自变量一个因变量拟合

fit_nonlinear_data.m

function [beta, r]=fit_nonlinear_data(X, Y, choose)% Input: X 自变量数据(N, D), Y 因变量(N, 1),choose 1-regress, 2-nlinfit 3-lsqcurvefitif choose==1X1=[ones(length(X(:, 1)), 1), X];[beta, bint, r, rint, states]=regress(Y, X1)% 多元线性回归% y=beta(1)+beta(2)*x1+beta(3)*x2+beta(4)*x3+...% beta—系数估计% bint—系数估计的上下置信界% r—残差% rint—诊断异常值的区间% states—模型统计信息rcoplot(r, rint)saveas(gcf,sprintf('线性曲线拟合_残差图.jpg'),'bmp');elseif choose==2beta0=ones(7, 1);% 初始值的选取可能会导致结果具有较大的误差。[beta, r, J]=nlinfit(X, Y, @myfun, beta0)% 非线性回归% beta—系数估计% r—残差% J—雅可比矩阵[Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J)% 非线性回归预测置信区间% Ypred—预测响应% delta—置信区间半角plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');saveas(gcf,sprintf('非线性曲线拟合_1.jpg'),'bmp');elseif choose==3beta0=ones(7, 1);% 初始值的选取可能会导致结果具有较大的误差。[beta,resnorm,r, ~, ~, ~, J]=lsqcurvefit(@myfun,beta0,X,Y)% 在最小二乘意义上解决非线性曲线拟合(数据拟合)问题% beta—系数估计% resnorm—残差的平方范数 sum((fun(x,xdata)-ydata).^2)% r—残差 r=fun(x,xdata)-ydata% J—雅可比矩阵[Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J)plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');saveas(gcf,sprintf('非线性曲线拟合_2.jpg'),'bmp');endendfunction yy=myfun(beta,x) %自定义拟合函数yy=beta(1)+beta(2)*x(:, 1)+beta(3)*x(:, 2)+beta(4)*x(:, 3)+beta(5)*(x(:, 1).^2)+beta(6)*(x(:, 2).^2)+beta(7)*(x(:, 3).^2);end

demo.m

%x,y为离散点横纵坐标clearclcX=[ 63.50 73.60 30.90 ;67.90 77.90 33.20;61.90 74.10 31.20;64.20 76.50 32.50;66.70 76.50 32.50];Y=[64.00;73.80 ;65.60;70.30;69.50];choose=1;fit_nonlinear_data(X, Y, choose)

拟合羊的体重

#重量估计,输入体高,体长,体宽,输出估计重量#公式:y = beta(1) + beta(2) * x1 + beta(3) * x2 + beta(4) * x3def sheep_weight_estimation(body_length,body_height,body_width):#matlab多项式拟合k1 =-288.7822k2 = -0.4094k3 = 14.2552k4 = -21.6917sheep_weight=k1 + k2*body_height + k3*body_length + k4*body_widthreturn sheep_weight

参考:/kailugaji/p/13086180.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。