24小时热门版块排行榜    

查看: 657  |  回复: 3

恶女晴晴

银虫 (初入文坛)

[求助] 急求解决for循环问题已有1人参与

clc
clear all
CA=zeros(20+1,1);
B=zeros(20+1,1);
CA(1)=1/2;
CA(2)=1/2;
l=2;
for D=0.1:0.1:0.5  
for t=0.1:0.1:1
    for i=2:20
        B(i)=-CA(i)*D;
    end
    CA=B*5
    CL(l)=CA(20)
    l=l+1
end
  a=numel(CL)
end


上例子可能无直接意义,请不要计较。只是遇到一个问题,在‘for t=0.1:0.1:1’这个循环不是就应该是10次吗,那么CL(l)每次外循环“for D”内不是都应该到CL(11)吗?为什么会出现CL(51)??外循环与里边的for循环怎么搀和一起了????当外循环改成‘for D=0.1’时候,就循环一次,到CL(11),为什么一改变D变成一个向量就搀和了???求大神赐教!!!!谢谢谢谢~~~
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
恶女晴晴: 金币+10, ★★★★★最佳答案, 灰常感谢 2014-07-04 11:16:49
因为你的CL在for D=0.1:0.1:0.5; ...; end这个外循环里面没有重新定义,所以外循环5次,加上内循环10次,共50次,你的l本身是从2开始加,共51次,CL得长度自然是51了,而D=0.1的话,就是内一层循环的10次(即t=0.1:0.1:1);
如果要CL的长度每次都为11,那要在你的D那一层循环里面加上一个语句CL=[];
CODE:
clc
clear all
CA=zeros(20+1,1);
B=zeros(20+1,1);
CA(1)=1/2;
CA(2)=1/2;
l=2;
for D=0.1:0.1:0.5
    CL = []; % in each D loop, CL should be initialized to empty matrix.
    for t=0.1:0.1:1
        for i=2:20
            B(i)=-CA(i)*D;
        end
        CA=B*5
        CL(l)=CA(20)
        l=l+1
    end
    a=numel(CL)
end

What would Jesus do?
2楼2014-07-03 23:16:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

【答案】应助回帖

上面那个程序还有问题,l也要重新再定义。
即在
CODE:
CL = []; % in each D loop, CL should be initialized to empty matrix.

后面加上
CODE:
l = 2;

» 本帖已获得的红花(最新10朵)

What would Jesus do?
3楼2014-07-03 23:17:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

恶女晴晴

银虫 (初入文坛)

送红花一朵
引用回帖:
3楼: Originally posted by dnp at 2014-07-03 23:17:52
上面那个程序还有问题,l也要重新再定义。
即在

CL = []; % in each D loop, CL should be initialized to empty matrix.

后面加上

l = 2;

灰常感谢
4楼2014-07-04 11:17:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 恶女晴晴 的主题更新
信息提示
请填处理意见