# create a "moving window" plot

24 views (last 30 days)
Emily Platt on 20 Jun 2021
Commented: Emily Platt on 21 Jun 2021
Hello, I have a cell array that i want to plot (all numeric values) called RR. the data was collected over time so values lower down would be later in time. i want to plot multiple plots on seperate figures in a moving window apporach.
I want to plot the first 257 points, and then the next 257 on a seperate plot etc and then the final plot which will be smaller than the rest
i know to use the first one I'd type:
plot(RR(1:257))
and then i'm assuming i should use a for loop but im struggling to incoporate it

Walter Roberson on 20 Jun 2021
Assuming numeric RR
for base = 1 : 257 : length(RR)
idx = base : min(length(RR), base+256);
figure
plot(idx, RR(idx));
end
Emily Platt on 21 Jun 2021
Thank you very much!

Image Analyst on 20 Jun 2021
Unfortunately you forgot to attach your cell array. If it's bigger than 5 MB, crop it down. Then use the paperclip icon so we can try things.
How many cells are in the cell array? Are the contents of each of the cells in the cell array the same (like a 1-D 257 element vector) or does each array have a different size? What is the size of the contents of the array in each cell? Why are you even using cell arrays instead of a normal 3 or 4-D double array (why complicate things)?
If ca is your cell array
for k = 1 : length(ca)
thisVector = ca{k}; % Assume each cell has a long vector in it.
indexes = unique([1 : 257 : length(thisVector), length(thisVector)]);
for k2 = 1 : length(indexes) - 1
index1 = indexes(k2);
index2 = indexes(k2 + 1) - 1;
plot(thisVector(index1:index2), '-', 'LineWidth', 2)
hold on;
end
end
grid on;
hold off;
Emily Platt on 20 Jun 2021
hello, thank you for your help, there are 1402 cells in total. ive now moved the data to a 1402x1 double to make it easier since it should just be a simple plot from here?