作者x5825108 (花花)
看板MATLAB
标题[问题]有关for回圈
时间Sun Jun 2 12:36:45 2013
爬了一下文仍然没有头绪
还请多多指教
for回圈应该可以使用两个index吧?
例如
X = zeros(5);
for i = 1:5 , j = 6:10;
X(i,j-5) = i + j;
end
原本我以为它的执行顺序是
i = 1 和 j = 6 丢进叙述内,1+6=7
7这个值就会存进X(1,1)
然後跑完第一圈,接着继续第二圈i = 2,j = 7
跑完回圈後照理说X会变成这样
7 0 0 0 0
0 9 0 0 0
0 0 11 0 0
0 0 0 13 0
0 0 0 0 15
可是实际执行後却是
7 8 9 10 11
8 9 10 11 12
9 10 11 12 13
10 11 12 13 14
11 12 13 14 15
这不就变成跟以下巢状回圈一样了吗
X = zeros(5);
for i = 1:5
for j = 6:10
X(i,j-5) = i + j;
end
end
想请问问题出在哪呢
或者说
该怎麽写才可以达成上面我想的逻辑呢
就是i和j一起增加
而不是像巢状回圈一样一个index先跑完
隐约想得到可是就是没办法实际化
很少写程式问题有点笨鞭小力一点ˊ口ˋ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.1.134
※ 编辑: x5825108 来自: 140.116.1.134 (06/02 12:42)
1F:推 profyang:你这样其实只是一个index... 06/02 14:19
2F:→ profyang:i = 1:5 , j = 6:10; for k=1:5 06/02 14:20
3F:→ profyang:X(i(k),j(k)-5) = i(k) + j(k); 06/02 14:20
4F:→ prouno:两个变数维度都一样的话 diag(i+j) 就好了 06/02 16:59
5F:推 aramilcat:X = []; 06/02 17:58
6F:→ aramilcat:for i = [1:5;6:10] 06/02 17:59
7F:→ aramilcat: X = [ X sum(i)]; 06/02 17:59
8F:→ aramilcat:end 06/02 17:59
9F:→ aramilcat:diag(X) 06/02 17:59
10F:→ aramilcat:我这样写会不会很多余...QQ 我也刚初学 06/02 18:01
11F:推 aramilcat:X = zeros(5) 06/02 18:31
12F:→ aramilcat:for i = [1:5;6:10] 06/02 18:31
13F:→ aramilcat: X(i(1),i(1)) = i(1) + i(2) 06/02 18:32
14F:→ aramilcat:end 06/02 18:32
15F:→ aramilcat:恩...这样写比较接近原po想要问的感觉? 06/02 18:32
16F:推 aramilcat:因为for回圈是依序取用变数的行向量,所以写成矩阵形式 06/02 19:12
17F:→ aramilcat:就可以做到你想要做的东西 06/02 19:12
18F:→ x5825108:我大概懂我原本code的问题了 06/02 19:30
19F:→ x5825108:我那样写的话 matlab 只会认第一个变数i 06/02 19:31
20F:→ x5825108:j就会变成另一个矩阵 然後跑进回圈和每一个i 做运算 06/02 19:32
21F:→ x5825108:所以才会跑出那些我预期之外的数 06/02 19:32
22F:→ x5825108:其实我只是想确认matlab可不可以这样用才举这个例子哈哈 06/02 19:33
23F:→ x5825108:不过看了大家的回应我也大概懂了,感谢各位费心指导T_T 06/02 19:35