循环求指导
>> for i=1:5,for j=1,5,
a(i,j)=1/(i+j-1)
end
end
ans =
5
a =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
ans =
5
a =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
ans =
5
a =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
ans =
5
a =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
ans =
5
a =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
为什么a(i,j)=1/(i+j-1)后面不加分号,就会产生这样的结果???
i=1 运行五次 i=2 运行五次 。。。。
之后它输出怎么控制的,怎么重复了5次相同的,这里的ans 默认为什么? 你这里的j=1:5还是j=1和5?
j=1,5,这行导致了i每循环一次就会出现一个ans=5
如果这样写
for i=1:5
for j=1:5
a(i,j)=1/(i+j-1)
end
end那么每循环一次就会出现一次a=
如果加了分号,那么在最后再输出一遍a就可以得到最后结果
a =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111 gaoxian 发表于 2012-8-13 10:26 static/image/common/back.gif
你这里的j=1:5还是j=1和5?
j=1,5,这行导致了i每循环一次就会出现一个ans=5
如果这样写
谢谢您的回复,我这里可能抄错了,j=1:5。
但是我这里没有搞懂的是2个问题:假设这里的j=1,5的时候
第一个:
这里的ans 应该是默认变量名,最近一次操作运算结果。那么最后一次运算的结果应该是a(i,j)啊,怎么是j=5吗???这里ans不应该选取a(i,j)的最后值嘛(当i=5,j=5的时候)
第二个:这里为什么会出现5个 ans ,不是应该出现2*5 个ans吗?
期待回复! 爱的侍者 发表于 2012-8-13 17:19 static/image/common/back.gif
谢谢您的回复,我这里可能抄错了,j=1:5。
但是我这里没有搞懂的是2个问题:假设这里的j=1,5的时候
第一个问题:你这里j=1,5,并不是j=1和j=5其实你这样写的作用是这个意思
for i=1:5
for j=1
5
a(i,j)=1/(i+j-1)
end
end
也就是说其实j是一个确定的值为1,然而i每循环一次都会输出一次ans=5,这个5并不是j=5
ans是matlab中默认的结果变量. 每次matlab进行运算后, 结果都要储存在指定的变量中. 如果你只是输入表 达式, 却不指定把表达式的运算结果储存在那个变量里面, 那么matlab就自 动地将结果储存在ans变量中. 直到下一次不带指定存储变量的运算结束前, ans中 所储存的值不变.
意思就是你现在程序中有两个表达式5和1/(i+j-1),但是第一个表达式5你没有存储到变量里,那么就直接存在ans中,第二个表达式你将结果存在了a里,所以循环结束时候ans=5而不是你说的a的最后值。
第二个问题:你这里的j=1,5,应该你运行的程序就是这样写的,也许你的本意是j=1:5,让j循环的,但是由于疏忽把冒号写成了逗号,这样就只循环i=1:5循环五次,其实j这时候根本就不循环,所以就会出现5个ans,还是那个理由就是j=1,5,不是j=1和j=5,可能我一楼的疑问让你误解了。
这样回复应该能明白了吧。。。 gaoxian 发表于 2012-8-13 18:24 static/image/common/back.gif
第一个问题:你这里j=1,5,并不是j=1和j=5其实你这样写的作用是这个意思
for i=1:5
for j=1
:) 感谢您的如此详细的回复~ 完全明白啦 谢谢~!~ 爱的侍者 发表于 2012-8-14 10:57 static/image/common/back.gif
感谢您的如此详细的回复~ 完全明白啦 谢谢~!~
:P互相学习~~~
页:
[1]