24小时热门版块排行榜    

查看: 1410  |  回复: 11

吕京毛衣

银虫 (小有名气)

[求助] 自己编写了一段Matlab代码,运行时出现bug 已有1人参与

一段模拟化学反应的代码,运行时出现“Undefined function 'P' for input arguments of type 'double',而我只是想用P(i)作为一个数组储存分子数,请大家帮我看看,怎么修改?谢谢大家!


Xm=2000;Xa=2;Xr=0;  % [Xm]=2 mol/L
kd=0.00001;kp=1000;kt=10000000;
kd1=0.00001;kp1=1;kt1=10000; % VNa=1000
T=0;
j=0;
I=[];X=[];U=[];V=[];Pn=[];
while(T<=2400)
    Rd=kd1*Xa;
    Rp=kp1*Xm*Xr;
    Rt=0.5*kt1*Xr*Xr;
    R=Rd+Rp+Rt;
    Pd=Rd/R;Pp=Rp/R;Pt=Rt/R;
    r1=rand(1);
    t=(1/R)*log(1/r1);
    r2=rand(1);
    if r2<=Pd  %链引发(不区分单体和初级自由基)
        Xm=Xm-2;
        Xa=Xa-1;
        Xr=Xr+2;
        j=j+1;
        X=[X;j];
        R(j)=1;
        j=j+1;
        X=[X;j];
        R(j)=1;
    else
        if r2>Pd&&r2<=Pd+Pp %链增长
            Xm=Xm-1;
            b=ceil(Xr*rand(1));
            r3=X(b);
            R(r3)=R(r3)+1;
        else
            if r2>Pd+Pp&&r2<=1
                Xr=Xr-2;
                c=ceil(Xr*rand(1));
                r4=X(c);
                X(c)=[];
                d=ceil((Xr-1)*rand(1));
                r5=X(d);
                X(d)=[];
                i=R(r4)+R(r5);
               
                z=find(I==i);
                if z>=1
                    P(i)=P(i)+1;%储存分子数
                else
                    P(i)=1;%储存终止产物链长
                end
                 I=[I;i];
            end
        end
    end
   
    T=T+t;U=[U;T];%储存时间
    C=(2000-Xm)*100/2000;
    V=[V;C];%储存单体转化率
    L=length(I);S=sum(I);
    E=S/L;%平均链长
    Pn=[Pn;E];
end
  N=sum(P(i));
  f(i)=P(i)./N;%数量分布
  m(i)=i.*P(i);
  M=sum(m(i));
  w(i)=m(i)./M;%重量分布
  subplot(221);
  plot(I,f(i))
  subplot(222);
  plot(I,w(i))
  subplot(223);
  plot(U,V)    %转化率-时间曲线
  subplot(224);
  plot(U,Pn)   %平均链长-时间曲线
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

lifang2009

银虫 (小有名气)

P(i)被赋值时候没有问题,Matlab会自动处理,但是在右侧作为一个操作数的时候必须有确定的值

发自小木虫IOS客户端
8楼2016-04-08 14:46:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

月只蓝

主管区长 (职业作家)

P的初始值没有定义。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2016-04-07 13:47:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1049569501

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
没有定义函数或数组P,在循环前定义一下就行了。
3楼2016-04-07 18:59:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

吕京毛衣

银虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-04-07 13:47:30
P的初始值没有定义。

这种数组的初始值怎么定义呢?应该是空的吧

发自小木虫IOS客户端
4楼2016-04-08 08:36:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

吕京毛衣

银虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-04-07 13:47:30
P的初始值没有定义。

我运行时第一次会进入到选择P(i)=1呀,我试过把这块程序拿出来写成一个小程序,就是可以运行的,不需要定义初始值或数组。这让我很疑惑是不是问题出在我整个程序里的其他地方?

发自小木虫IOS客户端
5楼2016-04-08 08:46:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

吕京毛衣

银虫 (小有名气)

引用回帖:
3楼: Originally posted by 1049569501 at 2016-04-07 18:59:41
没有定义函数或数组P,在循环前定义一下就行了。

里面的R(i)数组也没有定义什么,为什么就没有问题呢?

发自小木虫IOS客户端
6楼2016-04-08 09:17:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
7楼2016-04-08 10:11:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lifang2009

银虫 (小有名气)

可以在z=find(l==i)加断点调试,肯定先执行第一个分支了

发自小木虫IOS客户端
9楼2016-04-08 14:49:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

吕京毛衣

银虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-04-07 13:47:30
P的初始值没有定义。

这个代码就是可以运行的

I=[];t=0
while (t<=3)
i=ceil(rand(1));
z=find(I==i);
if z>=1
     P(i)=P(i)+1;
else
     P(i)=1;
end
I=[I;i],t=t+1
end
P
10楼2016-04-08 16:04:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 吕京毛衣 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +24 医学老男孩 2026-08-13 50/2500 2026-08-15 06:38 by 学员8dgXkO
[基金申请] filecode +7 cratir 2026-08-14 11/550 2026-08-15 06:19 by 学员8dgXkO
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 k0dTPqJtl0jt 2026-08-14 4/200 2026-08-15 02:21 by 4wMiSEwB6436
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 7lpolszZVXgi 2026-08-14 4/200 2026-08-15 01:08 by 4wMiSEwB6436
[考研] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 HFw0lei2R37i 2026-08-14 7/350 2026-08-15 00:40 by 4wMiSEwB6436
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 22/1100 2026-08-14 23:45 by Noways
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +5 Ldrop2023 2026-08-13 5/250 2026-08-14 18:48 by ssxclkj
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +23 Lanmanbaby 2026-08-09 37/1850 2026-08-14 13:40 by Equinoxhua
[硕博家园] 请教兼职经验 +3 是阿文鸭 2026-08-09 3/150 2026-08-14 12:07 by HER12025
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] 关于Filecode分析方法 +9 majunge000 2026-08-10 12/600 2026-08-13 23:20 by iwuli
[硕博家园] 一作与独作在应聘高校教师时区别大吗 +3 mbygzh 2026-08-08 4/200 2026-08-13 19:31 by 龙-樱
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
信息提示
请填处理意见