QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 7025|回复: 6
打印 上一主题 下一主题

nlinfit 求教—MATLAB编程问题

[复制链接]
字体大小: 正常 放大
xiwu 实名认证       

2

主题

3

听众

135

积分

升级  17.5%

该用户从未签到

自我介绍
200 字节以内

不支持自定义 Discuz! 代码
跳转到指定楼层
1#
发表于 2010-6-4 16:00 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
%% ------1 先建立自定义函数的M文件------------------
function y=Gompertz(b,t);
y=b(1)*exp(-b(2)*exp(-b(3)*t));
%% ------2 再建立数据的结构体储存方式------------------
clc;
datas=smooth212; %smooth212已排升序,先按品种,再按个体,再按日龄;数据smooth212见附件中的电子表格数据
brd=0;%用来表示不同品种,1Landrace,2Yorkshire,3Duroc,4Unkown
id=0;%用来表示不同个体
n=0;%用来计算不同品种个体数
tday=0;%用来计算不同个体测定天数
breeds=struct('earmark',[]);%以下程序对data中的数据用结构数组进行分类存储,结构数组有3级,依次是品种breeds,耳牌earmark,和每天测定数据tdata
for i=1:length(datas)
    if datas(i,2)~=brd
        brd=datas(i,2);
        id=datas(i,1);
        n=1;
        tday=1;
    elseif datas(i,1)~=id
        id=datas(i,1);
        n=n+1;
        tday=1;
    else
        tday=tday+1;
    end
    breeds(brd).earmark(n).tdata(tday,:)=datas(i,:);  %创建结构体
end
%% ------3 求Gompertz模型曲线参数估计------------------
for i=1:length(breeds);
    t=0;
    for j=1:length(breeds(i).earmark);
        t=t+1;
        [beta r]=nlinfit(breeds(i).earmark(j).tdata(:,5),breeds(i).earmark(j).tdata(:,7),@Gompertz,[100 2 0.001]); %调用句柄函数,做非线性拟合Gompertz方程
        breeds(i).zjdata(t,1:3)=beta; % Gompertz 拟合参数向量,品种i中的个体t的估计参数
        breeds(i).zjdata(t,4)=1-sum(r.^2)/(length(breeds(i).earmark(j).tdata)-1)/var(breeds(i).earmark(j).tdata(:,7));  %拟合效果
     end
end  % 运行后出错,错在函数结果出现了无穷小Inf或逻辑非值NaN,需要修改MATLAB源程序
%%-----------4参数结果保存---------------------------
  logdata=[];
      for i=1:length(breeds)
         logdata=[logdata;breeds(i).zjdata];
      end
%%------------------------------------------------------------
我在运行第3段程序时,计算机就不出结果了,出现错误。但是当改为对logistic函数时,程序就没问题,可能是nlinfit(breeds(i).earmark(j).tdata(:,5),breeds(i).earmark(j).tdata(:,7),@Gompertz,[100 2 0.001])还要修改。但我吧知道怎么修改了,请各位路过的高手进来帮忙看看啊。

smooth212导出结果.xls

1.89 MB, 下载次数: 0, 下载积分: 体力 -2 点

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
xiwu 实名认证       

2

主题

3

听众

135

积分

升级  17.5%

该用户从未签到

自我介绍
200 字节以内

不支持自定义 Discuz! 代码
回复

使用道具 举报

1341

主题

738

听众

2万

积分

数学中国总编辑

  • TA的每日心情

    2016-11-18 10:46
  • 签到天数: 206 天

    [LV.7]常住居民III

    超级版主

    社区QQ达人 邮箱绑定达人 元老勋章 发帖功臣 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组2011年第一期数学建模

    群组第一期sas基础实训课堂

    群组第二届数模基础实训

    群组2012第二期MCM/ICM优秀

    群组MCM优秀论文解析专题

    这个是该函数的调用形式:[BETA,R,J,COVB,MSE] = NLINFIT(X,Y,MODELFUN,BETA0)
    BETA0表示初始值构成的向量!

    下面是help文档中对此函数的参数解释:

      Y is a  vector of response (dependent variable) values.  Typically, X is a
        design matrix of predictor (independent variable) values, with one row
        for each value in Y and one column for each coefficient.  However, X
        may be any array that MODELFUN is prepared to accept.  MODELFUN is a
        function, specified using @, that accepts two arguments, a coefficient
        vector and the array X, and returns a vector of fitted Y values.  BETA0
        is a vector containing initial values for the coefficients.
    回复

    使用道具 举报

    1341

    主题

    738

    听众

    2万

    积分

    数学中国总编辑

  • TA的每日心情

    2016-11-18 10:46
  • 签到天数: 206 天

    [LV.7]常住居民III

    超级版主

    社区QQ达人 邮箱绑定达人 元老勋章 发帖功臣 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组2011年第一期数学建模

    群组第一期sas基础实训课堂

    群组第二届数模基础实训

    群组2012第二期MCM/ICM优秀

    群组MCM优秀论文解析专题

    [beta r]=nlinfit(breeds(i).earmark(j).tdata(:,5),breeds(i).earmark(j).tdata(:,7),@Gompertz,[100 2 0.001]); 这个语法没有错误!
    回复

    使用道具 举报

    8

    主题

    5

    听众

    708

    积分

    升级  27%

  • TA的每日心情

    2014-9-22 12:39
  • 签到天数: 74 天

    [LV.6]常住居民II

    2012挑战赛参赛者

    新人进步奖

    群组2016研赛备战群组

    群组我行我数

    群组数学建模保研联盟

    群组机器人

    群组D题讨论群

    回复

    使用道具 举报

    5

    主题

    6

    听众

    838

    积分

    升级  59.5%

  • TA的每日心情

    2013-9-23 10:38
  • 签到天数: 60 天

    [LV.6]常住居民II

    新人进步奖

    回复

    使用道具 举报

    xiwu 实名认证       

    2

    主题

    3

    听众

    135

    积分

    升级  17.5%

    该用户从未签到

    自我介绍
    200 字节以内

    不支持自定义 Discuz! 代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-6-6 11:10 , Processed in 0.769393 second(s), 87 queries .

    回顶部