精华内容
下载资源
问答
  • matlab非线性函数拟合与实验报告(不使用工具箱)供新手参考使用的matlab代码,内含m文件与实验报告一份。
  • 深度学习 神经网络 BP 多层感知机 非线性函数 拟合 matlab
  • MATLAB 实现BP神经网络的非线性系统建模-非线性函数拟合
  • 非线性函数拟合

    2018-04-20 16:05:58
    神经网络非线性函数拟合神经网络非线性函数拟合神经网络非线性函数拟合神经网络非线性函数拟合
  • matlab拟合多项式非线性函数程序,两种方法
  • BP神经网络的非线性系统建模_非线性函数拟合matlab代码,可以直接运行!
  • MATLAB进行非线性拟合

    千次阅读 2020-04-20 16:59:39
    matlab进行非线性拟合常用最小二乘法,适用于:已经求解出函数,但含有未知数,不过已经收集到了一系列数据 1.lsqcurvefit 格式:[x, resnorm,r,flag]=lsqcurvefit(fun, c0,xdata,ydata) c0为初始解向量;xdata,...

    matlab进行非线性拟合常用最小二乘法实现,适用于:已经求解出函数,但含有未知数,不过已经收集到了一系列数据

    1.lsqcurvefit

    格式:[x, resnorm,r,flag]=lsqcurvefit(fun, c0,xdata,ydata)

    c0为初始解向量;xdata,ydata为数据;

    fun为待拟合函数(句柄函数),resnorm=sum ((fun(c,xdata)-ydata).^2),即在xdata处残差的平方和;flag为终止迭代的条件。

    例:确定模型中的参数,已知数据点:

    xdata = [3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4];

    ydata = [16,150.5,260.1,22.5,206.5,9.9,2.7,165.5,325.0,54.5];

    句柄函数举例:

    xdata=[3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4]; 
    ydata=[16,150.5,260.1,22.5,206.5,9.9,2.7,165.5,325.0,54.5];
    c0=[0 0 0];
    f_h=@(c, x) c(1)*x.^2 + c(2)*x.*sin(x) + c(3)*x.^3;
    [c,resnorm,r]=lsqcurvefit(f_h,c0,xdata,ydata);
    plot(xdata,f_h(c,xdata),xdata,ydata,'o');

    自定义函数举例:

    xdata=[3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4]; 
    ydata=[16,150.5,260.1,22.5,206.5,9.9,2.7,165.5,325.0,54.5];
    c0=[0 0 0];
    [c,resnorm,r]=lsqcurvefit(@cal,c0,xdata,ydata);
    plot(xdata,cal(c,xdata),xdata,ydata,'o');
    
    function y = cal(c,x)
    y = c(1)*x.^2 + c(2)*x.*sin(x) + c(3)*x.^3;
    end

    2.fittype

    使用fittype函数可以自定义拟合函数,可以满足线性拟合和非线性拟合。fittype函数具有很灵活的配置,基本满足各种复杂场景。

    fittpye 函数内部参数 ' independent ' 指定哪些变量为自变量,相对的 ' coefficients ' 指定哪些变量为未知量,如:

    ft = fittype('自定义函数','independent ','x');

    ft = fittype('自定义函数','coefficients',{'k','r'});

    需要注意的是,fit 函数内的自变量与因变量都需要是列矩阵,如果初始数据为行矩阵的话,需要转置一下

    fit 后面可以加参数来指定拟合参数的初始值,如:

    fo = fit( x , y , ft , 'startpoint' , [0 0]);

    1.做多项式拟合:

    x=[1;1.5;2;2.5;3];
    y=[0.9;1.7;2.2;2.6;3];
    ft=fittype('poly2');
    fo=fit(x,y,ft);
    plot(x,fo(x))  % or plot(fo, x, y);
    

    2.做非线性拟合:

    线性化拟合:

    x=[0.2,0.5,0.8,1.1,1.2,1.5,1.8,2];
    y=[2.35,1.38,0.81,0.62,0.78,1.43,2.25,3.18];
    ex= {'x^2','sin(x)','1'};
    ft=fittype(ex);
    fo=fit(x',y',ft);
    plot(x,fo(x),x,y,'o');

    非线性化拟合:

    x=[0.2,0.5,0.8,1.1,1.2,1.5,1.8,2];
    y=[2.35,1.38,0.81,0.62,0.78,1.43,2.25,3.18];
    ex= {'x^2','sin(x)','1'};
    ft=fittype('a*x^2+b*sin(x)+c','independent','x');
    fo=fit(x',y',ft);
    plot(x,fo(x),x,y,'o');

    例:在某次阻尼振荡实验中测得18组数据点,试确定其振动方程。(使用匿名函数实现)

    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.07,0.059,0.08,0.032,-0.015,-0.02];

    解:由物理背景知:

    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.07,0.059,0.08,0.032,-0.015,-0.02]';  %注意这里的转置
    f_h=@(a,k,w,x) a.*cos(k.*x).*exp(w.*x);
    ft=fittype(f_h);
    fo=fit(x,y,ft)
    xx=0:0.1:20;
    yy=fo(xx);
    plot(x,y,'r*',xx,yy,'b-');

     

    展开全文
  • 基于matlab的神经网络非线性函数拟合问题
  • 多元非线性函数拟合(Matlab_nlinfit函数)

    千次阅读 多人点赞 2020-07-24 10:11:15
    前两天练题的时候要用到多元非线性拟合,但是在网上找到的大多都是一些求问的帖子,真正有用的回答却不多,这里汇总一下与大家分享。 首先导入数据(参数和结果) 确定自己要拟合函数(自己画个散点图预估一下,...

    Process

    前两天练题的时候要用到多元非线性拟合,但是在网上找到的大多都是一些求问的帖子,真正有用的回答却不多,这里汇总一下与大家分享。

    • 首先导入数据(参数和结果)
    • 确定自己要拟合的函数(自己画个散点图预估一下,或者是使用SPSS的曲线估算,但是没自己画图看的舒服)
    • 确定要拟合的系数的预估值(全部写零也行,但是你得有个大概想法,比如你图像是幂次为负的幂函数,那么你就写个负值,比如-1)
    • 套用nlinfit函数,得出的bate矩阵就是你要拟合的系数矩阵。
    • covB回归系数的协方差
      mse均方误差
      beta参数最优值
      r各点处的拟合残差
      J雅各比矩阵的数值
      ErrorModelInfo错误模型信息

    Code

    clear all;
    a=xlsread("C:\Users\123\Desktop\数据.xlsx","a");%导入表a
    b=xlsread("C:\Users\123\Desktop\数据.xlsx","b");%导入表b
    s=a(:, 6);%y值(结果矩阵)
    myfunc=inline('beta(1).*x(:,1).^(beta(2))+beta(3).*x(:,2).^(beta(4))+beta(5).*x(:,3).^(beta(6))+beta(7).*x(:,4).^(beta(8))+beta(9)','beta','x');%内联函数(beta是函数自带的代表待确定的系数)
    beta0 = [1, -2 ,1, -2 ,1, -2 ,1, -2 ,60];%待定系数的预估值
    [beta,R,J,CovB,MSE,ErrorModelInfo]= nlinfit(b, s, myfunc,beta0);
    beta
    
    展开全文
  • MATLAB拟合多元非线性函数?2019-9-20来自ip:17.115.189.200的网友咨询浏览量:207问题补充:MATLAB拟合多元非线性函数?自变量x1=【101 98.4 98.8 98.5 98.6 98.2 98.8 99.2 99.5 100.6 101.9 101.5 102.7 102.4 102.8...

    MATLAB拟合多元非线性函数?

    2019-9-20来自ip:17.115.189.200的网友咨询

    浏览量:207

    问题补充:

    MATLAB拟合多元非线性函数?

    自变量x1=【

    101 98.4 98.8 98.5 98.6 98.2 98.8 99.2 99.5 100.6 101.9 101.5 102.7 102.4 102.8 103.1 102.9 103.3 103.5 103.6 104.4 105.1 104.6 104.9 104.9 105.4 105.3 105.5 106.4 106.5 106.2 106.1 105.5 104.2 104.1 104.5 103.2 103.6 103.4 103 102.2 101.8

    x2=【

    496135.31 506708.07 530626.71 540481.21 548263.51 568916.2 573102.85 576698.95 576698.95 586643.29 594604.72 610224.52 625609.29 636072.26 649947.46 656561.22 663351.37 673921.72 674051.48 687506.92 696471.5 699776.74 710339.03 725851.79 733884.83 736130.86 758130.88 757384.56 763409.22 780820.85 772923.65 780852.3 787406.2 816829.25 825493.94 851590.9 855898.89 867177.63 895600 889600 900000 925000 919100

    因变量y=【

    6.903106 7.225627 8.235698 8.568031 9.057412 10.11868 11.53129 9.041437 9.371831 10.11123 10.83773 11.08377 10.10374 10.33224 10.57647 9.668508 8.662745 7.931444 7.811012 7.725547 7.753376 8.71688 8.187911 8.159127 8.164803 8.515319 8.592566 8.616842 7.977995 7.960922 7.722894 7.343536 6.759 7.079082 6.683803 6.322855 6.596952 7.004311 6.512667 6.890974 6.786185 6.329737 5.968858

    怎样用MATLAB拟合y关于x1和x2的非线性曲线呢?选的模型是y=a*x1+b*x2+c*x1.^2+d*x2.^2+e

    展开全文
  • matlab lsqcurvefit 非线性拟合

    万次阅读 多人点赞 2018-08-19 20:28:35
    非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=...拟合如下非线性函数 函数曲线如下所示。 fit_fun.m function diff = fit_fun(param, X) a = param(1); m = pa...

    非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得输出的如下最小二乘表达式成立:
    min\sum{({F(xc, xdata) - ydata})^2}

    例 1

    拟合如下非线性函数

    y=c + \frac{1}{(1+x^a)^m}

    函数曲线如下所示。

    fit_fun.m

    function diff = fit_fun(param, X)
    
    a = param(1);
    m = param(2);
    c = param(3);
    diff = c + 1./(1 + X.*a).^m;

    main.m,调用lsqcurvefit函数,完成非线性数据拟合。

    clear all;
    close all;
    clc;
    
    
    X = 0:0.01:50;
    
    a = 0.15;
    m = 1.8;
    c = 0.1;
    Y = c + 1./(1 + X.*a).^m;
    
    param_0 = [1 1 1];
    
    param = lsqcurvefit(@fit_simp, param_0, X, Y)
    
    Y_new = param(3) + 1./(1 + X.*param(1)).^param(2);
    
    plot(X, Y, '*r', X, Y_new, 'b');

    拟合结果如下:

    >> x =  0.1500    1.8000    0.1000

    例 2

    拟合如下三维曲线

    z=c + \frac{1}{(1+x^a+y^b)^m}

    fun.m

    function diff = fit_simp(param, Xin)
    
    a = param(1);
    b = param(2);
    m = param(3);
    c = param(4);
    
    x = Xin(:, 1);
    y = Xin(:, 2);
    
    diff = c + 1./(1 + x.*a + y.*b).^m;

    main.m

    
    xdata = 0:1:50;
    ydata = 0:1:40;
    
    Xin = zeros(length(xdata),2);
    Xin(:, 1) = xdata;
    Xin(:, 2) = linspace(min(ydata), max(ydata), length(xdata));
    
    a = 0.15;
    b = 0.1;
    m = 1.8;
    c = 0.1;
    zdata = c + 1./(1 + Xin(:, 1).*a + Xin(:, 2).*b).^m;
    
    param0 = [1 1 1 1];
    
    param = lsqcurvefit(@fit_simp_3, param0, Xin, zdata)
    
    Z_new = param(4) + 1./(1 + Xin(:, 1).*param(1) + Xin(:, 2).*param(2)).^param(3);
    
    plot3(Xin(:,1), Xin(:,2), zdata - Z_new, '-*b');

    拟合结果为:

    >> param = [ 6.3753 -7.7816 1.8 0.1]

    拟合残差如图所示。由图可知残差非常小,说明拟合效果理想。

    注:由于初始参数的设置问题,拟合出的参数与实际参数并不一致, 这是因为lsqcurvefit求解的并不是全局最优解,而是局部最优。

    拟合残差

     

    展开全文
  • 使用nlinfit、fminsearch在matlab中实现基于最小二乘法的非线性参数拟合(整理自网上资源)最小二乘法在曲线拟合中比较普遍。拟合的模型主要有1.直线型2.多项式型3.分数函数型4.指数函数型5.对数线性型6.高斯函数型......
  • matlab 万能实用的非线性曲线拟合方法

    万次阅读 多人点赞 2018-08-13 09:43:41
    在科学计算和工程应用中,经常会遇到需要拟合一系列的离散数据,最近找了很多相关的文章方法,在这里进行总结一下其中最完整、几乎能解决所有离散参数非线性拟合的方法   第一步:得到散点数据 根据你的实际...
  • MATLAB多元非线性拟合

    千次阅读 2021-04-20 10:48:21
    使用“regress” 线性的不行,用二次函数。 format long A=[... 0.2 13.6 8503 251 27.4 7.7 9.9 3658 314 13.9 5.8 10.8 7307 433 26.8 7.70 9.70 6717 257 23.8 7.5 9.8 7609 280 21.7 ...
  • 首先对于函数进行分析:该函数是一个比较强的非线性函数,所以不能用一般的最小二乘法来进行拟合,如过一定要用最小二乘法,则A必须是已知的,再利用最二乘法进行拟合,附程序2.
  • BP神经网络的非线性系统建模-非线性函数拟合(matlab实现)代码,包含源代码和测试数据
  • MATLAB源码集锦-基于粒子群算法的寻优算法-非线性函数极值寻优
  • 遗传算法优化BP神经网络-非线性函数拟合 matlab程序
  • MATLAB非线性回归拟合nlintool非线性回归非线性回归可用命令nlinfit,nlintool,nlparci,nlpredci来实现。进行非线性回归时可使用nlinfit指令,其语法如下:beta = nlinfit(X,y,fun,beta0)[beta,r,J] = nlinfit(X,y,...
  • 基于matlab的神经网络非线性函数拟合问题
  • MatLab中的多项式拟合(lsqcurvefit函数非线性曲线拟合) lsqcurvefit函数 函数原型 x=lsqcurvefit(fun, x0, xdata, ydata) == 其中的参数表示为:== xdata ydata为给定数据横纵坐标 按照函数文件fun给定的函数...
  • Matlab线性拟合非线性拟合

    万次阅读 多人点赞 2019-01-23 09:25:36
    线性拟合 已知如下图像的x,y坐标,x = [1.0, 1.5, 2.0, 2.5, 3.0],y = [0.9, 1.7, 2.2, 2.6, 3.0],如何用一条直线去拟合下列散点? 代码: x = [1.0, 1.5, 2.0, 2.5, 3.0]'; y = [0.9, 1.7, 2.2, 2.6, 3.0]'...
  • matlab实现非线性曲线拟合用matlab实现非线性曲线拟合,步骤如下:(1)考虑以下的试验数据点:(第一列为x坐标,第二列为y坐标)Data=[0.0045 102.91280.0245 43.06810.0445 21.01260.0645 12.49180.0845 9.02460....
  • BP神经网络的非线性系统建模-非线性函数拟合,基于bp神经网络的非线性函数拟合,matlab源码.rar
  • BP神经网络的非线性系统建模-非线性函数拟合,基于bp神经网络的非线性函数拟合,matlab源码.zip
  • matlab开发-非线性函数的函数优化。利用遗传算法对非线性函数进行函数优化。
  • 最小二乘法非线性曲线参数拟合-最小二乘法原理及其MATLAB实现.pdf (初学者--我)最近正在研究matlab最小二乘法非线性拟合问题,昨天在论坛里求教,但没有人给予解答。只好自己查找相关文献,觉得其中最有用的一篇...
  • 采用遗传算法优化的BP神经网络-非线性函数拟合,各种代码齐全

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,003
精华内容 3,201
关键字:

matlab非线性函数拟合

matlab 订阅