Iterating over an array to produce an array of calculated variances based on the next 9 entries and previous 9 entries

1 view (last 30 days)
Code
% Extract x coordinates from 1st column of h_coordinates
x_coordinates = h_coordinates(:,1);
for i=1:length(x_coordinates);
if(i <= (length(x_coordinates)-9))
var_x(:,i) = x_coordinates(i) - mean(x_coordinates(i:i+9));
else
var_x2(:,i) = x_coordinates(i) - mean(x_coordinates(i:i-9));
end
end
finalvar_x = horzcat(var_x,var_x2);
Description
I am examining variation in x_coordinates and want to calculate the variation of every entry compared to the 9 entries in front of it, until I get to the last 9 entries in the array then I want to calculate variation compared to the previous 9 entries.
The method I am trying above is not working for me, Var_x2 is only composed of 0s and Nans.
Thanks
  8 Comments
James Morris
James Morris on 11 Aug 2019
Edited: James Morris on 11 Aug 2019
Thanks for all your help. I found some user created moving deviation and moving variance functions that are perfect for me!

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 11 Aug 2019
Replace
for i=1:length(x_coordinates);
with
for i = 1 : length(x_coordinates) - 9
  6 Comments
James Morris
James Morris on 11 Aug 2019
Just researched these and they seem perfect for what I want, but I am using MATLAB R2015b due to working on a project that was developed on the 2015 version and has dependencies. I'm seeing if there are alternative built in functions.
James Morris
James Morris on 11 Aug 2019
Edited: James Morris on 11 Aug 2019
Thanks for all your help. I found some user created moving deviation and moving variance functions that are perfect for me!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!