作者cashpaggy (布丁女孩)
看板MATLAB
标题[问题] 比较两阵列内容
时间Thu Aug 16 10:37:24 2012
程式范例如底下
但是这样写对matlab来说效能非常差
想请问大家有没有更好的方法取代
谢谢!
[x ~] = size(a);
[m n] = size(b);
c = [];
d = [];
for i=1:m
for j=1:x
% if b(i, :) == a(j, 1) 笔误 已更正
if b(i, 1) == a(j, 1)
c = [c; b(i, :)];
else
d = [d; b(i, :)];
end
end
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.64.91.30
1F:→ jeffppp:看不懂你的if 看起来是一个向量跟一个数字比较? 08/16 15:34
2F:→ jeffppp:如果是这样 if 里面永远不会成立吧 08/16 15:35
※ 编辑: cashpaggy 来自: 203.64.91.30 (08/16 15:50)
3F:→ jeffppp:所以是比较第一个元素 如果一样 就把整行取出来这样? 08/16 16:15
4F:推 sunev: a 里的东西不重复吗? 08/16 16:17
5F:→ jeffppp:就你的程式看起来 c d 里面可能会有很多重复的b(i,:) 08/16 16:17
比较第一个元素没错
a里面不重复
b只有第一个会重复 後面元素都不重复
把a和b第一个元素重复的b向量 放到c
其余的放到d
ex
a=[1 b=[1 2 3 ==> c=[1 2 3 d=[3 1 2]
2] 1 1 2 1 1 2
1 1 1 1 1 1
2 3 1 2 3 1]
3 1 2]
大概是这样
※ 编辑: cashpaggy 来自: 203.64.91.30 (08/16 16:42)
6F:推 sunev:ind=ismember(b(:,1),a); c=b(ind,:); d=(~ind,:); 08/16 18:20
7F:→ cashpaggy:感谢!! 已解决 08/16 20:26