看板 MATLAB 關於我們 聯絡資訊
給定一個矩陣A,尋找每個row當中大於0的最小colum index 例如 A = -1 0 1 -2 1 2 -3 3 3 我需要得到 m = [3,2,2] 最原本的寫法是 for i = 1:N m(i) = find(A(i,:)>0,1) end 但是目前問題是N非常的大,希望有能省去迴圈的寫法 ------------- 試過 [row,col] = find(A>0) 不過從row 跟 col 挑出數值的時候,還是會用到迴圈... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.22.208 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1432314890.A.620.html ※ 編輯: sin55688 (140.113.22.208), 05/23/2015 01:17:04 ※ 編輯: sin55688 (140.113.22.208), 05/23/2015 01:18:01 ※ 編輯: sin55688 (140.113.22.208), 05/23/2015 01:18:38
sunev: B=A;B(B<0)=0;[~,I]=min(B,[],2); 05/23 05:07
profyang: 樓上這樣無理 會取到0 05/23 10:03
profyang: B=A; B(B<=0)=max(B(:))+1; [~,I]=min(B,[],2); 05/23 10:03
profyang: 改這樣好像就可以了 05/23 10:03
sin55688: 把小於0的值破壞掉後,用min函數。感謝兩位。 05/23 12:05
celestialgod: [~, I]=min(A-min(A(:))*zeros(size(A, 1), size(A, 05/24 13:32
celestialgod: 2))); 這樣應該可以不用另立變數 05/24 13:32
sunev: 感謝修正,也可以設成Inf啦。 05/25 11:54