zoukankan      html  css  js  c++  java
  • matlab多项式拟合以及指定函数拟合

    clc;
    clear all;
    close all;
    %% 多项式拟合指令;
    % X = [1 2 3 4 5 6 7 8 9 ];
    % Y = [9 7 6 3 -1 2 5 7 20];
    % P= polyfit (X,Y,3);
    %
    % x = 0:2:10;
    % y = polyval(P,x);
    % plot(x,y,X,Y,'r*');
    %% 指定函数拟合
    x=[ 0;0.4;1.2; 2;2.8;3.6;4.4;5.2; 6;7.2; 8;9.2;10.4;11.6;12.4;13.6;14.4;15];
    y=[ 1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059; 0.08;0.032;-0.015;-0.02];
    plot(x,y,'r*')
    hold on
    f = fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});
    cfun = fit(x,y,f);
    xi = 0:1:20;
    yi = cfun(xi);
    plot(xi,yi,'b-')
    %程序中,函数fittype是自定义拟合函数;cfun=fit( x, y, f)是根据自定义的拟合函数f 来拟合数据 x

    %% 关于拟合小列子,以logistic曲线模型
    % 读入人口数据(1971-2000)
    Y=[33815 33981 34004 34165 34212 34327 34344 34458 34498 34476 34483 34488 34513 ...
    34497 34511 34520 34507 34509 34521 34513 34515 34517 34519 34519 34521 34521 ...
    34523 34525 34525 34527];
    % 读入时间变量数据(t=年份-1970)
    T=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...
    27 28 29 30];
    % 线性化处理
    for i = 1:length(T)
    y(i) = 1/Y(i);
    x(i) = exp(-T(i));
    end
    %计算并输出回归系数B
    for i = 1:length(T)
    c = ones(30,1);
    X = [c,x'];
    b = inv(X'*X)*X'*y';
    end
    for i = 1: length(T)
    z(i) = b(1) + b(2)*x(i); %计算拟合值;
    s(i) = z(i) - sum(y)/30; %计算离差值;
    w(i) = z(i) - y(i) %计算误差;
    end
    %计算计算离差平方和
    S = s*s';
    %计算计误差差平方和
    Q = w * w';
    % 计算回归平方和U
    U=S-Q;
    % 计算,并输出F检验值
    F=28*U/Q;
    % 计算非线性回归模型的拟合值
    for j=1:30,
    Y(j)=1/(b(1,1)+b(2,1)*exp(-j));
    end
    % 输出非线性回归模型的拟合曲线(Logisic曲线)
    plot(T,Y)

  • 相关阅读:
    mysql问题小结
    mysql批量执行sql文件
    VMware使用中常见问题
    mybaits中xml文件大于号和小于号的处理方法
    自调用匿名函数的三种写法
    Linux相关文章
    Linux常用命令
    不触发事件,vue子组件传值给父组件
    elementUi使用单选框,并且单击行的时候选中该条数据
    可以和正则表达式一起使用的4个字符串方法
  • 原文地址:https://www.cnblogs.com/Kermit-Li/p/4325614.html
Copyright © 2011-2022 走看看