Mean neighbour values of a vector

6 vues (au cours des 30 derniers jours)
wenyi xiao
wenyi xiao le 18 Nov 2020
Hi,
I got an original data(a vector, size is 1*N):
the format is like this: 𝑠1:𝑥1,𝑥2,𝑥3…𝑥𝑁
And I need 20 series,
The scale 2 series was obtained by averaging two successive values from the original series. Scale 3 was obtained by averaging every three original values and so on as shown in equation.
𝑠2:(𝑥1+𝑥2)/2,(𝑥3+𝑥4)/2,…,(𝑥𝑁−1+𝑥𝑁)/2
𝑠20:(𝑥1+⋯+𝑥20)/20,…,(𝑥𝑁−20+⋯+𝑥𝑁)/20
How can I achieve this in Matlab?
  1 commentaire
Ameer Hamza
Ameer Hamza le 18 Nov 2020
Suppose you have an odd number of elements? How to calculate s2 in that case? For example, x have 5 elements.
s2 =: (x1+x2)/2, (x3+x4)/2, x5+????

Connectez-vous pour commenter.

Réponse acceptée

Srivardhan Gadila
Srivardhan Gadila le 24 Nov 2020
You can learn the essentials of MATLAB throught the MATLAB Onramp course. If you are already familiar then you can refer to the documentation of for, mean & Loops and Conditional Statements.
For the above cases listed 𝑠2:(𝑥1+𝑥2)/2,(𝑥3+𝑥4)/2,…,(𝑥𝑁−1+𝑥𝑁)/2 and 𝑠20:(𝑥1+⋯+𝑥20)/20,…,(𝑥𝑁−20+⋯+𝑥𝑁)/20, you can do something like below using arrayfun:
s1 = randn(40,1);
N = numel(s1);
m = 2;
s2 = arrayfun(@(i)mean(s1(m*(i-1)+1:m*i)),1:floor(N/m))
m = 20;
s20 = arrayfun(@(i)mean(s1(m*(i-1)+1:m*i)),1:floor(N/m))
Note that as Ameer Hamza rightly mentioned, you will have to figure out the code in the case where N is not exactly divisible by m.

Plus de réponses (0)

Catégories

En savoir plus sur Parallel Computing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by