Need to calculate the mean without considering the 0 counts. In [1 2 3 4 0 6 7], mean should be (1+2+3+4+6+7)/6 and then output place the mean of six number at place of 0.

조회 수: 1 (최근 30일)

답변 (1개)

dpb
dpb 2021년 6월 22일
>> v=[1 2 3 4 0 6 7];
>> v(v==0)=mean(v(v~=0))
v =
1.0000 2.0000 3.0000 4.0000 3.8333 6.0000 7.0000
>>
  댓글 수: 3
Steven Lord
Steven Lord 2021년 6월 23일
Without any built-in functions? No. The + operator is implemented as the built-in function plus.
If you want to do it specifically without the built-in mean function, yes. One approach would be to loop through the vector, adding up the elements of the vector and keeping track as you add each element to the total of how many non-zero elements you've seen. At the end divide.
dpb
dpb 2021년 6월 23일
Unless it's homework with such a condition, though, why would one not use logical addressing and mean(), though?
What's the point in having MATLAB if not going to use its features?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by