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 Ansicht (letzte 30 Tage)

Antworten (1)

dpb
dpb am 22 Jun. 2021
>> 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 Kommentare
Steven Lord
Steven Lord am 23 Jun. 2021
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 am 23 Jun. 2021
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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by