BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #8396同步于 2011/7/1
Matlab机器人发帖

关于if语句的疑惑

zjz455
2011/7/1镜像同步0 回复
这段程序是除去旋转对称及镜像对称的排列 a=[1 2 3 4 5]; b=perms(a); n=length(b); for i=1:n k=find(b(i,:)==1); b(i,:)=circshift(b(i,:),[0,6-k]);%找到1的位置,循环位移6-m次使-1全部位于各行首位 end %把1移到首位后,除去旋转方向相反及相同的元素 c=zeros(13,5); c(1,:)=b(1,:);%将b的第一行加入c m=1; %m为C中已有元素个数 for i=2:n flag=0; for j=1:m if c(j,2:5)==b(i,2:5)%首位相同,只比较后四位 flag=1;break; %去除相同的 end if c(j,2:5)==fliplr(b(i,2:5)) flag=1;break; %去除旋转方向相反的 end end if flag==0 c(m+1,:)=b(i,:); m=m+1; end end disp(c) 当我把两个if 合成一个时,为什么算出来的结果不一样?就是这句: if c(j,2:5)==b(i,2:5)%首位相同,只比较后四位 flag=1;break; %去除相同的 end if c(j,2:5)==fliplr(b(i,2:5)) flag=1;break; %去除旋转方向相反的 end 改为 if c(j,2:5)==b(i,2:5) | c(j,2:5)==fliplr(b(i,2:5)) flag=1;break; end 运算结果不一样 [/color]
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。