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
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
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 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!