若然 发表于 2009-7-17 17:18

帮忙看一下这个malab程序

%预设初始值
for i=1:30
    v(i,1)=10;%个体拥有的高知识水平值为10
end
w=rand(1,570);
for i=31:600
    for j=1:570
      v(i,1)=w(j);
    end
end
%比较t时刻的知识水平,得到t时刻的个体知识水平,并求出t时刻的平均知识水平,画出它与t的关系图,这里个体p是知识溢出者,q是知识接受者。
h=[];s=[];
A=0.1,a=0.4,b=0.6,c=0.001;
for t=1:9000
    for p=1:600
      for q=1:600
      if v(p,t)>v(q,t)
            dv(q,t+1)=A*v(q,t)^a*(v(p,t)-v(q,t))^b;
            v(q,t+1)=v(q,t)+dv(q,t+1);
      else
            dv(j,t+1)=0;
            v(q,t+1)=v(q,t)+dv(q,t+1);
      end
          h(t)=v(q,t+1);%空的数组h(t)用来存储t时刻个体知识水平,供下面画图用。
      end
end

    s(t)=h(t);
end
plot(t,s(t))
知识水平的累加部分没表示出来,因为不知道怎么去表示,希望大家帮帮我

ChaChing 发表于 2009-7-17 23:01

回复 楼主 若然 的帖子

LZ的程式不像matlab倒很像fortrn! 真的很难看懂别人的logical! 仅就前面一部分说说!
for i=31:600, for j=1:570, v(i,1)=w(j); end; end 里头的回圈根本有问题而且多馀!? 原来的相当於 for i=31:600, v(i,1)=w(570); end 或 v=;
凭直觉猜测LZ前面v的赋值是否是要如下式!
w=rand(1,570); v=;

若然 发表于 2009-7-18 14:39

回复 沙发 ChaChing 的帖子

ChaChing,谢谢你的回复,这样看是不知道我的程序的逻辑是什么,我的qq是185741237,你如果有空的话,不知道可不可以在qq上问你,这样有些问题比较好说清楚。你给我指出的问题,我修改一下看看。

若然 发表于 2009-7-18 14:53

帮忙看一下这个循环体程序

%预设初始值
w=rand(1,570);
v=;
%下面是比较t时刻的知识水平,得到t时刻的个体知识水平,并求出t时刻的平均知识水平,画出它与t的关系图.假设
t时刻个体i是知识溢出者,j是知识接受者
h=[];s=[];
A=0.1,a=0.4,b=0.6,c=0.001;
for t=1:9000
    for i=1:600
      for j=1:600
      if v(i,t)>v(j,t)
            dv(j,t+1)=A*v(j,t)^a*(v(i,t)-v(j,t))^b;
            v(j,t+1)=v(j,t)+dv(j,t+1);
      else
            dv(j,t+1)=0;
            v(j,t+1)=v(j,t)+dv(j,t+1);
      end
          h(t)=v(j,t+1);%空的数组h(t)用来存储t时刻个体知识水平,供下面画图用。
      end
end
end
页: [1]
查看完整版本: 帮忙看一下这个malab程序