Re: [討論] 想請教如何有效率地找出特定元素位置

看板MATLAB作者 (Acoustic)時間12年前 (2013/10/08 20:26), 編輯推噓8(806)
留言14則, 5人參與, 最新討論串2/3 (看更多)
※ 引述《smarter1004 (請拒絕看各新聞台)》之銘言: : 各位高手大家好 : 假設 size(a) = [1 5] : 那如果我要找出a中等於0的元素位置我只要輸入 : a == 0 : 那麼如果 size(a) = [10 5] : 我要找出a中等於[1 2 3 4 5]的row似乎只能用for迴圈解決 : 但它實在有夠慢 : 有沒有類似第一個有效率方法的寫法呢? : 謝謝各位 把它視為矩陣運算會比較快 我亂造一個 pp x 5 的矩陣M 每個row的數值為介於0~10的整數 從裡面找有哪些row的內容為 [1 2 3 4 5] 基本想法是先來個矩陣減法 再來找哪些row的平方和為0 pp=1000000; a = [1 2 3 4 5]; M = floor(rand(pp,5)*10); tic; tmp=(M-ones(pp,1)*a)'; find(sum( tmp.^2 )==0) toc -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.92.125

10/08 20:30, , 1F
用ismember跟find不是兩行就搞定了嗎
10/08 20:30, 1F

10/08 20:50, , 2F
速度問題,ismember比較慢
10/08 20:50, 2F

10/09 00:26, , 3F
那如果是這樣呢?
10/09 00:26, 3F

10/09 00:26, , 4F
M(:,1)==1&M(:,2)==2&M(:,3)==3&M(:,4)==4&M(:,5)==5
10/09 00:26, 4F

10/09 08:05, , 5F
樓上的方式最快~
10/09 08:05, 5F

10/09 10:07, , 6F
從命中first column裡的再找剩下的理論上會更快,不過我懶了
10/09 10:07, 6F

10/09 10:39, , 7F
如果有一海票column的話 sun大的方法要怎麼寫啊?
10/09 10:39, 7F

10/09 15:04, , 8F
生出指令字串再用eval做,
10/09 15:04, 8F

10/09 15:34, , 9F
推s大的方法 不過也可以參考dsearchn這個指令
10/09 15:34, 9F

10/09 15:35, , 10F
但是有一定的風險就是了XD
10/09 15:35, 10F

10/09 16:53, , 11F
感謝大家的幫忙 目前正使用banco大的方法
10/09 16:53, 11F

10/09 16:53, , 12F
sun大的方法不知道為啥我測起來比較慢耶
10/09 16:53, 12F

10/09 18:14, , 13F
你有幾個row?
10/09 18:14, 13F

10/10 03:05, , 14F
75萬左右
10/10 03:05, 14F
文章代碼(AID): #1IK_drD8 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1IK_drD8 (MATLAB)