出现Index exceeds matrix dimensions错误
n=20; time=70; s=unifrnd(0,1,n,n); s=round(s); s(1:n,1:n)=0; ran=1/4*rand(n);ran1=rand(n); ran2(1:n,1:n)=0.01; t=1; st{t}=s; s; s00=s;
for t=1:time
%r1=1./(1+exp(-k*t));
x1=random('norm',0.5,0.25,n,n); r1=1./(1+exp(-x1));
p=random('norm',0.5,0.5,n,n); r2=1./(1+exp(-p*t));
x3=0.5; r3=1./(1+exp(x3)); sum12=0;
for i=1:n, for j=1:n
if st{t}(i,j)==1, sum12=sum12+1;
else sum12=sum12; end
end; end
g=0.5; x4=g*(sum12/(n*n)); r4=x4*(1-x4)+0.75;
x5=0.5; r5=1./(1+exp(-x5));
for i=1:n, for j=1:n
s0=st{t}; s00=st{t}; R=r1*r2*r3*r4*r5(i,j);
if R(i,j)>ran(i,j)&ran1(i,j)>ran2(i,j); st{t+1}(i,j)=1;
else st{t+1}(i,j)=st{t}(i,j); end
end; end
st{t+1};
end
for t=1:time, y1(t)=sum2(st{t},n); end
y1
t=1:time;
plot(t,y1); title('产业集群技术创新')
xlabel('模拟次数');ylabel('集群中进行技术创新的企业总数')
%------------------------------------------------------------
function y1=sum2(s,n)
y1=0;
for i=1:n, for j=1:n
if s(i,j)==1, y1=y1+1; end
end; end
在 matlab 6.5 运行 主程序的时候 出现??? Index exceeds matrix dimensions. 这个错误,恳请大家帮我看看,多谢大家了
[ 本帖最后由 ChaChing 于 2009-12-26 23:21 编辑 ] 首先,你要知道,在哪一步出现了问题
然后,看循环的值有没有超过数组的大小
回复 沙发 sigma665 的帖子
谢谢指教! 非常感谢! 请问怎么知道在哪一步出现了问题呢,还请再指教,多谢了 一行一行Command输入, 就知道那一行出问题了matlab的好处之一就是其为直译式编辑
自己试试看吧
回复 地板 ChaChing 的帖子
一步一步运行回复 5楼 sigma665 的帖子
谢谢帮忙! 我一步一步运行了,在这个循环中,运行到这个循环时出现了 ??? Index exceeds matrix dimensions.提示,但我还是不知道哪错了,也不知道怎么改,麻烦再帮我看看好吗,多谢了 。我是初学 matlab,恳请指教for i=1:n
for j=1:n
s0=st{t};
s00=st{t};
R=r1*r2*r3*r4*r5(i,j);
if R(i,j)>ran(i,j)&ran1(i,j)>ran2(i,j);
st{t+1}(i,j)=1;
else
st{t+1}(i,j)=st{t}(i,j);
end
end
end
st{t+1};
end r5(i,j);
前面r5是一个数,这里变成矩阵了
回复 7楼 sigma665 的帖子
这下好了!太感谢你了, 非常感谢 !太感谢了!
页:
[1]