Greetings. I have generated a vector of 10,000 complex samples. I want to calculate the Mean and Variance of the samples. How can I do it without using the built-in functions _ mean()_ and * var()* ? and how do I do that in a loop? Please help.
Thank you

1 commentaire

Ana Soph
Ana Soph le 6 Mai 2020
How can convert to 1 minute to 10 minutes, a wind directio data ? please, i have a matrix fo 1440x31

Connectez-vous pour commenter.

 Réponse acceptée

Jorge Mario Guerra González
Modifié(e) : Jorge Mario Guerra González le 19 Jan 2017
Since you want to do it without using the functions, just do:
A=rand(1000,1); %your array
sum1=0;
for i=1:length(A)
sum1=sum1+A(i);
end
M=sum1/length(A); %the mean
sum2=0;
for i=1:length(A)
sum2=sum2+ (A(i)-M)^2;
end
V=sum2/length(A); %Varaince

4 commentaires

Stephen23
Stephen23 le 19 Jan 2017
@Jorge Guerra : you should never use the variable name sum, because this will shadow the inbuilt sum function (so it will not work). For the same reason never use variable names cell, length, size, i, j, table, etc. Beginners make the mistake of re-assigning name of important functions, and are then surprised when the inbuilt function does not work.
Note that you can use which to check if a name if already defined.
Walter Roberson
Walter Roberson le 19 Jan 2017
We do not encourage giving complete answers to homework questions.
SHRIVATHSA S.
SHRIVATHSA S. le 19 Jan 2017
Thank you @Jorge Guerra for the answer. It was really helpful
Jorge Mario Guerra González
Modifié(e) : Jorge Mario Guerra González le 19 Jan 2017
@Stephen Cobeldick absolutely agree, that was just a fast script I wrote to show the proccedure. I edited the answer

Connectez-vous pour commenter.

Plus de réponses (3)

Walter Roberson
Walter Roberson le 19 Jan 2017

2 votes

Mean is the average -- the sum divided by the number of entries.
Variance is the sum of the squares of (the values minus the mean), then take the square root and divided by the number of samples
You can vectorize the calculation using sum().
To use a for loop to calculate sums, initialize a running total to 0, and then each iteration of the loop, add the current value to the running total.

3 commentaires

SHRIVATHSA S.
SHRIVATHSA S. le 19 Jan 2017
Thank you @Walter Roberson for the answer. That helped me a lot
Jurgen
Jurgen le 19 Déc 2017
This answer contradicts the variance formula on the MATLAB website (no square root). Oh and wikipedia disagrees. The MATLAB variance assumes a uniform probability distribution. A very important assumption.
John D'Errico
John D'Errico le 24 Juil 2020
@ Jurgen - you make no sense in some of what you said, although you are correct about the square root being incorrect in this answer. Variance has no square root in it.
A variance is something you can compute from the data, or for a population, but there is no assumption about the underlying distribution, nor is there any need to make such an assumption.

Connectez-vous pour commenter.

Olayemi Akinsanya
Olayemi Akinsanya le 16 Sep 2017
Modifié(e) : Olayemi Akinsanya le 16 Sep 2017

0 votes

P=[10:2:70]
i wrote a script for variance, it gives me a value of 320. when i check with var(P), it gives me a value of 330.6667. can someone advice what i did wrong.
Nikos Lambadakis
Nikos Lambadakis le 1 Avr 2022

0 votes

A=rand(1000,1); %your array
sum((A(1:end)-sum(A(1:end))./length(A)).^2)/(length(A)-1) % the same result as
% var(A)
var(A) == sum((A(1:end)-sum(A(1:end))./length(A)).^2)/(length(A)-1)
ans =
logical
1

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by