作者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