悠悠心情 发表于 2006-5-28 22:15

求助循环如何改

我是初学者<BR>要做毕设才学matlab的<BR>很多地方都不太会<BR>请大家帮个忙<BR>
<P>我做的东西类似图像匹配<BR>程序是这样的M是原图像M2是7×7的模板<BR>=size(M)<BR>m=345<BR>n=500<BR>for i=1:m<BR>for j=1:n<BR>for a=1:(m-6)<BR>for b=a+6<BR>for c=1:(n-6)<BR>for d=c+6<BR>H(i,j)=sum(sum(abs(M2-M(a:b,c:d)))) <BR>但是可能循环太多<BR>程序运行好久都不能结束<BR>请帮帮忙<BR>如何改才好</P>

jimin 发表于 2006-5-29 10:03

<P>不要用太多的循环吧<BR>再说了<BR> for循环应该有个 end 的<BR>for i=1:6<BR>a(i)=i;<BR>end<BR></P>

NVHht 发表于 2006-5-29 10:37

建个议(to <STRONG><FONT face=Verdana color=#61b713>悠悠心情</FONT></STRONG>):简要介绍一下算法,没准算法错了。很多人没有你这方面的工程背景,如果理解错了,怎么改也不可能得到正确的答案的。

ericlin 发表于 2006-5-29 10:45

循环太多,像b=a+6,d=c+6直接代到式子里就行了吧,而且你的MATLAB在等你输入end呢,如果你这样的话她一辈子都等不来了。<BR>

cdwxg 发表于 2006-5-29 11:10

算法估计涉及不到吧,这个程序还是简单,但问题确实是犯了显然错误<BR>a,b,c,d都没有必要,保留m,n然后for循环必须要有结束语句,或者你需要有个结束的条件。<BR>没关系,刚开始都是这样的。慢慢的很多东西都顺其自然地注意得到了。

悠悠心情 发表于 2006-5-29 15:28

end我是加了的<BR><BR>那个<FONT face=Verdana color=#000000><STRONG>cdwxg</STRONG>大人<BR>偶做大矩阵里取7×7的不用abcd偶不是很会搞<BR><BR>各位大人偶再回去试试...........</FONT>

悠悠心情 发表于 2006-5-29 20:17

偶现在改成<BR>for i=1:(m-6)<BR>for j=1:(n-6)<BR>H(i,j)=sum(sum(abs(M2-M(i:(i+6),j:(j+6)))))<BR>end<BR>end<BR>还是运算不能停止<BR>到底是哪里的问题啊555~~~~

happy 发表于 2006-5-29 20:33

回复:(悠悠心情)求助循环如何改

贴完整代码

悠悠心情 发表于 2006-5-29 21:32

load<BR>M<BR>M2<BR>=size(M)<BR>for i=1:(m-6)<BR>for j=1:(n-6)<BR>H(i,j)=sum(sum(abs(M2-M(i:(i+6),j:(j+6)))))<BR>end<BR>end<BR>到这里就进行不下去了..........555~~~
页: [1]
查看完整版本: 求助循环如何改