[問題] 如何隨機抓取矩陣裡面的值已回收

看板MATLAB作者 (CHI)時間15年前 (2010/07/15 15:59), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
有一個矩陣 a=[ 12 4 16 7 8 16 4 12 3 5 24 13 17 10 9 11] 想要隨機抓取3個pixels 然後不抓取重複的 例如 隨機抓取 [12 5 9] 或 [11 4 7] 這要如何做呢? 我只想到最笨的方法 就創造兩個隨機的數 範圍再1~4之間的整數 去抓取 然後第二次 在創隨機兩個數 假如跟之上一個一樣的話就重新隨機一次~~ 這樣以此類推 但好像蠻笨的... 是否有更好的方法呢? 感謝 a = 12 4 16 7 8 16 4 12 3 5 24 13 17 10 9 11 b = 2 3 4 5 1 2 1 1 2 2 2 2 3 3 3 3 >> index=randperm(length(reshape(a,1,[]))); >> index index = 6 3 16 11 7 14 8 5 15 1 2 4 13 9 10 12 >> index1=randperm(length(reshape(b,1,[]))); >> index1 index1 = 12 11 16 6 1 9 13 4 10 3 8 7 14 2 5 15 結果是這樣~~ 要怎麼改正呢 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.194.175

07/15 16:04, , 1F
randperm 1~16; 1~3, 4~6, ..., 不重複的隨機抓取
07/15 16:04, 1F

07/15 16:05, , 2F
ex: index=randperm(16); b(1,:)=a(index(1:3)),...這樣
07/15 16:05, 2F

07/15 17:18, , 3F
是過 可以了 但是我不單純只有矩陣a還有矩陣b矩陣c 等等等
07/15 17:18, 3F

07/15 17:18, , 4F
這樣的話要怎麼改呢?
07/15 17:18, 4F

07/15 20:09, , 5F
改索引最大值(a的最大值→16)和抓取各數 index(1:n)
07/15 20:09, 5F

07/15 21:21, , 6F
樓上大哥請問一下 那假如a跟b兩個最大值是一樣的話
07/15 21:21, 6F

07/15 21:21, , 7F
要怎麼分辨是哪一個呢?
07/15 21:21, 7F

07/16 03:20, , 8F
index=randperm(length(reshape(a,1,[])));
07/16 03:20, 8F

07/16 10:43, , 9F
我用樓上大哥的方法 然後把a改成b 但結果是a的內容 而不是b
07/16 10:43, 9F
※ 編輯: kcting 來自: 122.116.151.224 (07/16 10:47)
文章代碼(AID): #1CFh_W6J (MATLAB)