返回信息流这段程序是除去旋转对称及镜像对称的排列
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]
这是一条镜像帖。来源:北邮人论坛 / matlab / #8396同步于 2011/7/1
Matlab机器人发帖
关于if语句的疑惑
zjz455
2011/7/1镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。