看板 MATLAB 關於我們 聯絡資訊
程式範例如底下 但是這樣寫對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
jeffppp:看不懂你的if 看起來是一個向量跟一個數字比較? 08/16 15:34
jeffppp:如果是這樣 if 裡面永遠不會成立吧 08/16 15:35
※ 編輯: cashpaggy 來自: 203.64.91.30 (08/16 15:50)
jeffppp:所以是比較第一個元素 如果一樣 就把整行取出來這樣? 08/16 16:15
sunev: a 裡的東西不重複嗎? 08/16 16:17
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)
sunev:ind=ismember(b(:,1),a); c=b(ind,:); d=(~ind,:); 08/16 18:20
cashpaggy:感謝!! 已解決 08/16 20:26