How to take the average of each column of a matrix without including a certain number

I have a matrix that has 864 rows and 7 columns and is filled with positive numbers and zeros. I want to take the average of each of those columns. However when MATLAB is taking the averages, I dont want it to include the zeros in its calculations. Can this be done?

 채택된 답변

What you can do is do a quick substitution. if you know your matrix doesn't have any NaN (Not a number) then substitute the 0's for nan and then use the nanmean() which will exclude the NaNs from the average.
B=A;
B(A==0)=nan;
NonZeroAverages = nanmean(B);

추가 답변 (2개)

If you don't have nanmean because you don't have the Finance or Statistics toolbox, you can simply do
columnMeans = sum(a, 1) ./ sum(a~=0);
where "a" is the name of your matrix. This sums up the values in each column, then divides it by the sum of the non-zero values in each column.
Let's call your array "a":
my_mean = zeros(size(a,2),1);
for i = 1:size(a,2)
d = a(:,i);d = d(d~=0);
my_mean(i) = mean(d);
end

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

태그

질문:

2014년 7월 16일

댓글:

2014년 7월 16일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by