作者sin55688 (單手挑藏獒)
看板MATLAB
標題[問題]給定矩陣,尋找所有row大於0的最小index
時間Sat May 23 01:14:47 2015
給定一個矩陣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://webptt.com/m.aspx?n=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
1F:推 sunev: B=A;B(B<0)=0;[~,I]=min(B,[],2); 05/23 05:07
2F:推 profyang: 樓上這樣無理 會取到0 05/23 10:03
3F:→ profyang: B=A; B(B<=0)=max(B(:))+1; [~,I]=min(B,[],2); 05/23 10:03
4F:→ profyang: 改這樣好像就可以了 05/23 10:03
5F:→ sin55688: 把小於0的值破壞掉後,用min函數。感謝兩位。 05/23 12:05
6F:→ celestialgod: [~, I]=min(A-min(A(:))*zeros(size(A, 1), size(A, 05/24 13:32
7F:→ celestialgod: 2))); 這樣應該可以不用另立變數 05/24 13:32
8F:推 sunev: 感謝修正,也可以設成Inf啦。 05/25 11:54