• 回答数

    4

  • 浏览数

    2371

  • 收藏数

    0

作者:生性凉薄 发表于 2018-11-20 14:34:44
跳转到指定楼层
各位能帮我看下,我这个问题到底在哪里吗?一直提示:索引超出矩阵维度
新手很着急,谢谢!感激不尽,跪谢了!真心求告知!
程序如下:
t=(1:1:2000)
counter=zeros(1,2000);
x(1)=0;
y(1)=0;
z(1)=0;
x(2)=0;
y(2)=0;
z(2)=0.01;
W=1;
w=0.7;
N=0;
M=0;
while(N<2*10.^5)
S=0;
H=0;
for i=3:1:10000
W=W*w;
L=(-0.1)*log2(rand(1));
b=acos(0.588*(1.7225-0.077/(0.15+1.7*rand(1)).^2));
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(1)=z(i-1)+L*cos(b);
a=z(i)-z(i-1);
S=S+a;
H=H+L;
M=M+1
N;
if(S)>300
x(i);
y(i)
M;
break
end
end
T=round(H/300000000*10.^9);
if abs(x(i))<500
if abs(y(i))<500
counter(T)=counter(T)+1;
p=x(i);
q=y(i)
end
end
N=N+1;
end
plot(t, counter(t));


分享:
回复

使用道具

该用户从未签到

新手上路

Rank: 1

积分
34
极客币
79
主题
10
帖子
33
注册时间
2018-10-22
在线时间
2 小时
性别
保密
发表于 2018-11-20 14:35:38 | 显示全部楼层
a=z(i)-z(i-1);
这行有问题
你前面只定义了z(2)=0.01;所以z只有两个元素
而i的初值为3的时候
a=z(i)-z(i-1);试图使用并不存在的z的第三个元素,当然会报错了

你再检查检查这句
  • z(1)=z(i-1)+L*cos(b);

[color=rgb(51, 102, 153) !important]复制代码


是不是把z(i)写错了
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
39
极客币
96
主题
12
帖子
45
注册时间
2018-10-22
在线时间
2 小时
性别
保密
 楼主| 发表于 2018-11-20 14:35:50 | 显示全部楼层
情场老司机 发表于 2018-11-20 14:35
a=z(i)-z(i-1);
这行有问题
你前面只定义了z(2)=0.01;所以z只有两个元素

谢谢,按照您说的修改了,正在跑,非常感谢您!
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
34
极客币
79
主题
10
帖子
33
注册时间
2018-10-22
在线时间
2 小时
性别
保密
发表于 2018-11-20 14:36:04 | 显示全部楼层
生性凉薄 发表于 2018-11-20 14:35
谢谢,按照您说的修改了,正在跑,非常感谢您!

不用客气,请记得把我上面的答复选为最佳答案
(我发现我最近帮忙解决的好些问题全都被悬着,实在是打击我的积极性)
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
39
极客币
96
主题
12
帖子
45
注册时间
2018-10-22
在线时间
2 小时
性别
保密
 楼主| 发表于 2018-11-20 14:36:25 | 显示全部楼层
情场老司机 发表于 2018-11-20 14:36
不用客气,请记得把我上面的答复选为最佳答案
(我发现我最近帮忙解决的好些问题全都被悬着,实在是打击我的 ...

好的,很感谢您!
回复

使用道具 举报

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录