[問題]給定矩陣,尋找每個row中大於0的最小index

看板MATLAB作者 (單手挑藏獒)時間9年前 (2015/05/23 01:14), 9年前編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/1
給定一個矩陣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

05/23 05:07, , 1F
B=A;B(B<0)=0;[~,I]=min(B,[],2);
05/23 05:07, 1F

05/23 10:03, , 2F
樓上這樣無理 會取到0
05/23 10:03, 2F

05/23 10:03, , 3F
B=A; B(B<=0)=max(B(:))+1; [~,I]=min(B,[],2);
05/23 10:03, 3F

05/23 10:03, , 4F
改這樣好像就可以了
05/23 10:03, 4F

05/23 12:05, , 5F
把小於0的值破壞掉後,用min函數。感謝兩位。
05/23 12:05, 5F

05/24 13:32, , 6F
[~, I]=min(A-min(A(:))*zeros(size(A, 1), size(A,
05/24 13:32, 6F

05/24 13:32, , 7F
2))); 這樣應該可以不用另立變數
05/24 13:32, 7F

05/25 11:54, , 8F
感謝修正,也可以設成Inf啦。
05/25 11:54, 8F
文章代碼(AID): #1LNsGAOW (MATLAB)