Mean neighbour values of a vector

2 次查看(过去 30 天)
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 个评论
Ameer Hamza
Ameer Hamza 2020-11-18
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+????

请先登录,再进行评论。

采纳的回答

Srivardhan Gadila
Srivardhan Gadila 2020-11-24
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.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Parallel Computing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by