Mean of every row in a double matrix without looping
조회 수: 2 (최근 30일)
이전 댓글 표시
Is it possible to find mean and std dev. of every row in a huge matrix with double data and a lot of NaN interspersed without looping through every row ?
A = [1 2 NaN; 4 NaN 6 ; 8 9 10]
output = 1.5
5
9
댓글 수: 0
채택된 답변
Matt J
2012년 12월 28일
편집: Matt J
2012년 12월 29일
If you have the Statistics toolbox, you can use nanmean(A,2) and nanstd(A,2).
If you don't have the toolbox, you can still avoid looping by doing
B=A;
map=~isnan(A);
B(~map)=0;
N=sum(map,2);
rowmeans = sum(B,2)./N;
rowstds = sqrt( sum(B.^2,2)./N -rowmeans.^2 );
If A is of type sparse, however, the above may need to be modified for efficiency's sake.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Kernel Creation from MATLAB Code에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!