24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1645  |  回复: 11

czmsina

铁虫 (初入文坛)

[求助] matlab中if循环不起来,请求大牛帮助!

我matlab中写了一段if循环语句,显示的却只是最后一次循环得到的结果检查不出错误在哪,还请高手指点一下,不胜感激。
下面是我的代码:
R=12
C=16
for k=1R*C)
for i=1:R
for j=1:C
GRIDTemp=ones(R,C);
if (i-1)>=1
    GRIDTemp(i-1,j)=0;
end
if (j-1)>=1
    GRIDTemp(i,j-1)=0;
end
if (j+1)<=C
    GRIDTemp(i,j+1)=0;
end
if (i+1)<=R
    GRIDTemp(i+1,j)=0;
end
end
end
ATemp(k,=reshape(GRIDTemp',1,R*C);
end
A0=ATemp
我本来是想把每次迭代得到的GRIDTemp的结果分别放到A0中,
可实际A0只是最后一次迭代的GRIDTemp的结果,不清楚该怎么去修改!
谢谢!
回复此楼

» 猜你喜欢

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

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

czmsina

铁虫 (初入文坛)

dbb627: 编辑内容 2012-07-03 20:33
重新粘一下代码
CODE:
R=12
C=16
for k=1:(R*C)
for i=1:R
for j=1:C
GRIDTemp=ones(R,C);
if (i-1)>=1
    GRIDTemp(i-1,j)=0;
end
if (j-1)>=1
    GRIDTemp(i,j-1)=0;
end
if (j+1)<=C
    GRIDTemp(i,j+1)=0;
end
if (i+1)<=R
    GRIDTemp(i+1,j)=0;
end
end
end
ATemp(k,:)=reshape(GRIDTemp',1,R*C);
end
A0=ATemp

[ Last edited by dbb627 on 2012-7-3 at 20:33 ]
2楼2012-07-03 15:52:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

czmsina

铁虫 (初入文坛)

不知道怎么了,粘后有错误,都是冒号
3楼2012-07-03 15:54:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
没什么问题啊,除了程序写的有点繁琐。A的每一列就是你的每次的结果啊,你给它变成行向量了
showmethemoney
4楼2012-07-03 16:50:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


dbb627: 金币+1, 感谢应助 2012-07-03 20:33:44
不确定你要获得什么结果,你这样的循环是每个k,i,j都有一个GRIDTemp,但是对于每一个k只有最后一个也就是i=R,j=C那个GRIDTemp赋给了Atemp(k),其他的GRIDTemp都没有使用。如果每个k只有一个GRIDTemp,那么将其初始化放在k循环下,再在不同的i和j下对其部分值进行修改(这时也可能不需要i,j的循环了,使用矩阵操作)。如果确实有那么多GRIDTemp要使用,那么将它定义为一个多维数组。
showmethemoney
5楼2012-07-03 17:03:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

czmsina

铁虫 (初入文坛)

引用回帖:
5楼: Originally posted by csgt0 at 2012-07-03 17:03:03
不确定你要获得什么结果,你这样的循环是每个k,i,j都有一个GRIDTemp,但是对于每一个k只有最后一个也就是i=R,j=C那个GRIDTemp赋给了Atemp(k),其他的GRIDTemp都没有使用。如果每个k只有一个GRIDTemp,那么将其初 ...

确实是每个k都值得到了最后一次的结果,我是想把每次的结果都提出来!
6楼2012-07-05 10:23:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
6楼: Originally posted by czmsina at 2012-07-05 10:23:12
确实是每个k都值得到了最后一次的结果,我是想把每次的结果都提出来!...

如果每次k,i,j的循环都需要得到一个GRID的话,也就是共(R*C)*R*C个GRID的话,那你把它用成多维数组就可以了,比如用GRIDTemp(k,i,j,:,=ones(R,C);然后后面的修改为0的方式不变,最后在循环里面赋给一个A(k,i,j,,最后依次把这里的A的每一层拨出来。但是我觉得你应该要的不是这样的结果。
showmethemoney
7楼2012-07-05 11:06:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

或者你这样吧,简单点
CODE:
clc
clear
R=3%12;
C=4%16;
t=0;
for k=1:(R*C)
      for i=1:R
         for j=1:C
             t=t+1;
             GRIDTemp=ones(R,C);
             if (i-1)>=1
                 GRIDTemp(i-1,j)=0;
             end
             if (j-1)>=1
                 GRIDTemp(i,j-1)=0;
             end
            
             if (j+1)<=C
                 GRIDTemp(i,j+1)=0;
             end
             if (i+1)<=R
                 GRIDTemp(i+1,j)=0;
             end
              ATemp(t,:)=reshape(GRIDTemp',1,R*C);
         end
     end
end  
  
A0=ATemp

showmethemoney
8楼2012-07-05 11:13:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

czmsina

铁虫 (初入文坛)

引用回帖:
8楼: Originally posted by csgt0 at 2012-07-05 11:13:18
或者你这样吧,简单点
clc
clear
R=3%12;
C=4%16;
t=0;
for k=1R*C)
      for i=1:R
         for j=1:C
             t=t+1;
             GRIDTemp=ones(R,C);
             if (i-1)>=1
   ...

很感谢您的耐心啊!不过这个循环好像比我要的结果多很多。
每次i,j都会得到一个GRIDTemp(R行C列的矩阵),k的循环是把每次的GRIDTemp矩阵转化为ATemp的一行,最终的ATemp应该是R*C行,R*C列的新矩阵。
自己也试着改了多次都没有成功!还是很感谢您的热心!
9楼2012-07-06 14:09:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

czmsina

铁虫 (初入文坛)

引用回帖:
8楼: Originally posted by csgt0 at 2012-07-05 11:13:18
或者你这样吧,简单点
clc
clear
R=3%12;
C=4%16;
t=0;
for k=1R*C)
      for i=1:R
         for j=1:C
             t=t+1;
             GRIDTemp=ones(R,C);
             if (i-1)>=1
   ...

您给我的这段代码循环出来是144行,而我需要的只是12行,而且这12行的结果也是正确的,实际上就是这12行又循环了12次!
10楼2012-07-06 14:16:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 czmsina 的主题更新
信息提示
请填处理意见