[心得] 二維矩陣搜尋最大或最小值(含絕對位置) …已回收

看板MATLAB作者 (~火火狗)時間14年前 (2011/10/02 15:43), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
%% 二維矩陣 搜尋最大或者最小值(b_var),包含絕對位置(d_1,d_2 ) % 2011/10/02 建立 % a_data 範例樣本二維矩陣為 M x N 尺寸大小 % b_var 矩陣內最小值的元素 % b_loc 矩陣尺寸大小經過轉換後,最小值元素的相對位置 % d_1 代表為最小值元素,在原本二維矩陣的位置 d_1 % d_2 代表為最小值元素,在原本二維矩陣的位置 d_2 % % 原理是在搜尋最大或者最小時,先把二維矩陣轉換成一維向量,a_data(1:end)丟給 % min指令就會當作一維向量搜尋,會得到最小值(b_var)與相對位置(b_loc),接著用 % 到商數與餘數觀念。將相對位置除以M,就會得到商數(d_2)與餘數(d_1)。 % 得到商餘數後 還不是正確的絕對位置,要進行修正。 % 雖然知道怎麼作,但不會表達。 % 主要修正為下兩行 % d_1(d_1 == 0 ) =size(a_data,1); % d_2(d_2 < size(a_data,2) ) =d_2+1; % % 不保證能用有包含虛數部分。 a_data =[1 2 3 4 5 6 7 8 9 10 11 12 ]; [b_var,b_loc] =min(a_data(1:end)); % 這裡可以改成要搜尋最大或者最小值 d_1 =rem(b_loc,size(a_data,1)); %求餘數 d_2 =fix(b_loc/size(a_data,1)); %求商數 d_1(d_1 == 0 ) =size(a_data,1); d_2(d_2 < size(a_data,2) ) =d_2+1; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.6.148

10/02 16:01, , 1F
發現BUG... 要是值有相同最大或最小....只會找到一個
10/02 16:01, 1F

10/02 16:04, , 2F
改天修正
10/02 16:04, 2F
※ 編輯: s123123sam 來自: 140.127.6.148 (10/02 16:06)

10/02 16:40, , 3F
不是min或是max兩次就可以了嘛? 還是我記錯了??
10/02 16:40, 3F

10/02 20:04, , 4F
[m n]=find(a_data==min(min(a_data)))
10/02 20:04, 4F

10/02 20:19, , 5F
對喔@@:,我把問題複雜化了實在不好意思,讓大家見笑了
10/02 20:19, 5F

10/02 20:21, , 6F
panzertp 大 提供另一種寫法 感謝~~~
10/02 20:21, 6F
文章代碼(AID): #1EY1OxPK (MATLAB)