看板 MATLAB 關於我們 聯絡資訊
※ 引述《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
jatj:用ismember跟find不是兩行就搞定了嗎 10/08 20:30
banco:速度問題,ismember比較慢 10/08 20:50
sunev:那如果是這樣呢? 10/09 00:26
sunev:M(:,1)==1&M(:,2)==2&M(:,3)==3&M(:,4)==4&M(:,5)==5 10/09 00:26
banco:樓上的方式最快~ 10/09 08:05
sunev:從命中first column裡的再找剩下的理論上會更快,不過我懶了 10/09 10:07
smarter1004:如果有一海票column的話 sun大的方法要怎麼寫啊? 10/09 10:39
sunev:生出指令字串再用eval做, 10/09 15:04
kurt28:推s大的方法 不過也可以參考dsearchn這個指令 10/09 15:34
kurt28:但是有一定的風險就是了XD 10/09 15:35
smarter1004:感謝大家的幫忙 目前正使用banco大的方法 10/09 16:53
smarter1004:sun大的方法不知道為啥我測起來比較慢耶 10/09 16:53
sunev:你有幾個row? 10/09 18:14
smarter1004:75萬左右 10/10 03:05