이것은 accumarray
에 적합합니다. 비어있는 요소에 0을 가정
vals = [3 1 1 9 7 4 10 1]; % got this from randi(10,1,8)
S = sparse([1 3 4 4 5 5 7 9],[2 2 3 6 7 8 8 11],vals);
각 행의 최소 값을 취득 다음 희소 행렬을 고려해
[ii,jj] = find(S);
rowMinVals = accumarray(ii,nonzeros(S),[],@min)
유의의 두 행인 행 4 rowMinVals
5, 여러 제로가 아닌 값 S는 행의 최소 동일하다 :
rowMinVals =
3
0
1
1 % min([1 9]
4 % min([7 4]
0
10
0
1
당신의 희소 행렬의 마지막 행 (들)이 아닌 0을 포함하지 않는 경우,하지만 당신은 분 행을 원하는 값 출력은
rowMinVals = accumarray(ii,nonzeros(S),[numRows 1],@min).
는 또한, 아마도 당신은 또한 출력의 기본
0
포함되지 않도록하려면, 다음과 같이 예를 들어,
accumarray
명령을 변경, 당신은
numRows
을 반영합니다.
rowMinVals = accumarray(ii,nonzeros(S),[numRows 1],@min,NaN)
rowMinVals =
3
NaN
1
1
4
NaN
10
NaN
1
NaN
NaN
NaN
아니면 다섯 번째 입력 인수 issparse
을 스파 스 매트릭스를 계속 사용할 수 있습니다 : : 그 처리 방법 중 하나는 NaN
에 fillval
입력 인수를 설정하는 것입니다
>> rowMinVals = accumarray(ii,nonzeros(S),[],@min,[],true)
rowMinVals =
(1,1) 3
(3,1) 1
(4,1) 1
(5,1) 4
(7,1) 10
(9,1) 1
니스! 매우 정교한 답변 주셔서 감사합니다! – Lisa
큰 것 또는 집으로 돌아가는 것, 맞습니까? 그러나 진지하게,'accumarray'는 매우 다양한 기능입니다. 또한 히스토그램을 만드는 훌륭한 대안입니다. – chappjc