24小时热门版块排行榜    

查看: 524  |  回复: 2

身心天地

铁杆木虫 (正式写手)

[求助] 索引超出矩阵维度,for循环i值的设置

t=(1:1:200)
counter=zeros(1,200);
x(1)=0;
y(1)=0;
z(1)=0;
x(2)=0;
y(2)=0;
z(2)=0.01;
n=0;
m=0;
while(n<100000)
s=0;
h=0;
for i=3:1:80
l=(-333)*log(rand(1));
b=acos(2*rand(1)-1);
e=2*pi*rand(1);
x(i)=x(i-1)+l*sin(b)*sin(e);
y(i)=y(i-1)+l*sin(b)*cos(e);
z(i)=z(i-1)+l*cos(b);
a=z(i)-z(i-1);
s=s+a;
h=h+l;
m=m+1
n;
if(s)>900
x(i);
y(i)
m;
break
end
end
t=round(abs(h)/60);
if abs(x(i))<25000
if abs(y(i))<25000
counter(t)=counter(t)+1;
p=x(i);
q=y(i)
end
end
n=n+1;
end
plot(t, counter(t));
代码如上,问题:就是这个for循环里面的i设置for i=3:1:80,我设置i等于不超过五十左右时,这个程序跑的通,当超过这个数值时就跳出索引超出矩阵维度。求解决,新手摸索两个月了,感激不尽,做不完,都没法回家过年了,唉,跪谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

465090264

木虫 (正式写手)

把下面几行连起来看看,你的t超出了counter的范围(这代码没格式,读起来好费劲)counter=zeros(1,200);
l=(-333)*log(rand(1));h=h+l;t=round(abs(h)/60);counter(t)=counter(t)+1;

发自小木虫Android客户端
2楼2019-01-27 00:44:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

身心天地

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by 465090264 at 2019-01-27 00:44:51
把下面几行连起来看看,你的t超出了counter的范围(这代码没格式,读起来好费劲)counter=zeros(1,200);
l=(-333)*log(rand(1));h=h+l;t=round(abs(h)/60);counter(t)=counter(t)+1;
...

谢谢您
3楼2019-01-28 21:02:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 身心天地 的主题更新
信息提示
请填处理意见