[問題] 比較兩陣列內容

看板MATLAB作者 (布丁女孩)時間13年前 (2012/08/16 10:37), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/2 (看更多)
程式範例如底下 但是這樣寫對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

08/16 15:34, , 1F
看不懂你的if 看起來是一個向量跟一個數字比較?
08/16 15:34, 1F

08/16 15:35, , 2F
如果是這樣 if 裡面永遠不會成立吧
08/16 15:35, 2F
※ 編輯: cashpaggy 來自: 203.64.91.30 (08/16 15:50)

08/16 16:15, , 3F
所以是比較第一個元素 如果一樣 就把整行取出來這樣?
08/16 16:15, 3F

08/16 16:17, , 4F
a 裡的東西不重複嗎?
08/16 16:17, 4F

08/16 16:17, , 5F
就你的程式看起來 c d 裡面可能會有很多重複的b(i,:)
08/16 16:17, 5F
比較第一個元素沒錯 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)

08/16 18:20, , 6F
ind=ismember(b(:,1),a); c=b(ind,:); d=(~ind,:);
08/16 18:20, 6F

08/16 20:26, , 7F
感謝!! 已解決
08/16 20:26, 7F
文章代碼(AID): #1GB5pcWw (MATLAB)
文章代碼(AID): #1GB5pcWw (MATLAB)