看板 MATLAB 關於我們 聯絡資訊
假如我有一個x[6]=[3,5,3,1,2,4]; [a,index]=sort(x); 得到a=[1,2,3,3,4,5]; index=[4,5,1,3,6,2]; 但如果要分別找1,2,3,4,5分別是在排序後的第幾個數字 是不是只能分別找 有沒有辦法在排序時就用另一個矩陣存下來? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.202.193 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1420213183.A.CA0.html
mp19990920: 排序後的 index 就是 1:length(x) 啊! 01/03 08:15
forb9823018: 樓上的意思是總長度? 但我要找的是例如我要找3是在 01/03 11:56
forb9823018: 排序後的哪個位置但每次要找一次不同的數字 01/03 11:57
forb9823018: 都要整個數列搜尋一次 01/03 11:57
forb9823018: 有沒有辦法在排序時就先存起來? 01/03 11:57
gotodmcyo: 就是1F說的index啊? 01/03 13:20
mp19990920: a = [1,2,3,3,4,5]; iA = 1:length(a); 01/03 14:19
mp19990920: iA = [1,2,3,4,5,6]; 01/03 14:19
mp19990920: ↑ 01/03 14:20
mp19990920: 第 2 個 3 在第 4 個數字 01/03 14:21
forb9823018: 但這樣沒有對應關係要怎麼找?肉眼一看就知道但 01/03 14:26
forb9823018: 沒有建立一對一的對應關係所以還是要整個數列搜尋? 01/03 14:27
mp19990920: ..... 為啥你會認為 a 跟 iA 並非一對一對應 01/03 16:59
forb9823018: 因為知道'5'這個數字之後要一個一個從a[1]、a[2]... 01/03 17:13
※ 編輯: forb9823018 (140.113.202.193), 01/03/2015 17:14:57
forb9823018: 直到a[6]才找到 iA對找尋'5'這個數字並沒有幫助 01/03 17:16
forb9823018: 不管a是什麼,只要總長度一樣 iA永遠都一樣 01/03 17:25
mp19990920: 你該不會不知道有 find 這個 function 吧!!! 01/03 17:29
forb9823018: 那就等於每個數字都要find一次,也就是整個數列要找 01/03 17:44
forb9823018: 過一遍計算量會很大,在排序時有辦法就先排好嗎? 01/03 17:45
forb9823018: 我想到一個不算太聰明的辦法 01/03 17:56
forb9823018: 應該有更好的寫法 01/03 17:56
forb9823018: 就是排序完再跑一個迴圈 01/03 17:57
forb9823018: 1:length(a) 01/03 17:57
forb9823018: for i=1:length(a) 01/03 18:00
forb9823018: b[a[i]]=i; 不過要把重複數字的定義好 01/03 18:04
※ 編輯: forb9823018 (140.113.202.193), 01/03/2015 18:11:37
gotodmcyo: 排序問題隨便找一本資料結構就有 01/03 19:48
mp19990920: 亂入又不看懂問題 ... 他已經 sort 過了 01/03 20:08
mp19990920: a=[1,2,3,3,4,5]; 01/03 20:08
mp19990920: index=[4,5,1,3,6,2]; 你要的是啥? 01/03 20:09
forb9823018: 就是打數值直接知道位置不用find還要花時間找 01/03 20:54
gotodmcyo: ??m大是指我嗎?我想說他要找一個複雜度低一點的演算法 01/03 21:20
gotodmcyo: 去找他要的東西 01/03 21:20
forb9823018: sort沒問題,我想問的是能不能在排序時 01/03 23:14
forb9823018: 就順便做到我推文中程式碼的效果 01/03 23:14
forb9823018: 而不用再跑回圈給值一次 01/03 23:15
mp19990920: 問題是你的迴圈有問題啊 b[a[3]]=3 b[a[4]]=4 01/04 12:47
mp19990920: 所以 b[3]=3 被 b[3]=4 蓋掉了 01/04 12:47
forb9823018: 所以我後面附註有說要把重複的數字定義好 01/04 15:25
forb9823018: 至於要怎麼定義就看應用 01/04 15:25