Creating a new plot every time there is a gap in data

3 views (last 30 days)
Hi,
I have two sets of data for a day worth of a staellite measurment. y is the measurment that the satellite does and x is lattitude that the satellite is in. Since there are more than one orbit per day the lattitude value recycles every orbit. I want to make a simple plot (or a series of plots) that starts displaying (x,y) from the beginning but when there is gap in data (represnting the recycled orbit) worth of lets say 5 [degrees], it starts a new plot and so on.
Thanks,
Pouya.
  2 Comments
Image Analyst
Image Analyst on 19 Apr 2022
Edited: Image Analyst on 19 Apr 2022
OK. Good luck with it. If you have any questions, just ask. But if you do ask, read this link first:
and attach your data file and code to read it into a variable in MATLAB. In the meantime, use diff(x) > 5 to try to find gaps of more than 5 in x.
Pouya
Pouya on 19 Apr 2022
My appologies I rushed posting this question I should've clarified my question better.
Basically let's say we have variable x = 1 2 3 4 5 6 ... 360 1 2 3 4 5 6 ... 360 1 2... and y= y1 y2 y3 ...yn
Plotting x vs y using plot(x,y) will show all y values vs x.
My question is, how can I plot these data so that when there is a gap between the values of data x larger than 1, for example, it saves the previous plot and start a new one where x(i=366) vs y(i=366) is the first data point of the new plot?

Sign in to comment.

Answers (1)

Pratyush Swain
Pratyush Swain on 3 Oct 2023
Hi Pouya,
I understand you want a new plot figure everytime the latitude values are recycled.
Please refer to an example implementation below:
lat = 1:360;
x=[lat,lat,lat]; % Example x data - series of cycling repeating values
y = 100*rand(1,360*3); % Example y data
figure; % Create a new figure
startIndex = 1; % Start index of each plot segment
for i = 2:length(x)
if abs(x(i) - x(i-1)) > 1 % Check if there is a gap larger than 1
plot(x(startIndex:i-1), y(startIndex:i-1)); % Plot the segment
xlabel('latitude'); % Set x-axis label
ylabel('y'); % Set y-axis label
figure; %Create new figure after each plot
startIndex = i; % Update the start index for the next segment
end
end
plot(x(startIndex:end), y(startIndex:end)); % Plot the last segment
xlabel('latitude'); % Set x-axis label
ylabel('y'); % Set y-axis label
Three independent plots are obtained as a result of above implementation.
Hope this helps.

Community Treasure Hunt

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

Start Hunting!