Prev: All sample times for this block must be discrete. No continuous or constant sample times are allowed.
Next: simulate time series data
From: Thomas Schreiter on 6 Aug 2010 09:07 Hi, I have a 2D data set of vehicle trajectories, containing the position of every vehicle at every time step. This position refers to a location of a ringroad. A ringroad of 1000m length has a jump in its location numbering: After meter 999 you reach "the beginning" of the ringroad at meter 0 again, much like in a car race at the start-finish line.) Plotting these trajectories with the plot command leads to an ugly plot: (1.) The plot show large jumps near the start-finish line, caused by the linear interpolation of the plot function. Instead, I'd like to interpolate in a _circular_ manner. (2.) It is not possible to pan the plot in the spatial dimension near the start-finish line. Is there an easy solution to this problem?
From: Joseph on 6 Aug 2010 09:44 I'm not sure I totally get this question but why not just wrap the data? In other words, add 1000m to your value ever time you get to the 999 -> 0 jump. "Thomas Schreiter" <t.schreiter(a)tudelft.nl> wrote in message <i3h1dp$s9o$1(a)fred.mathworks.com>... > Hi, > > I have a 2D data set of vehicle trajectories, containing the position of every vehicle at every time step. This position refers to a location of a ringroad. A ringroad of 1000m length has a jump in its location numbering: After meter 999 you reach "the beginning" of the ringroad at meter 0 again, much like in a car race at the start-finish line.) > > Plotting these trajectories with the plot command leads to an ugly plot: > (1.) The plot show large jumps near the start-finish line, caused by the linear interpolation of the plot function. Instead, I'd like to interpolate in a _circular_ manner. > (2.) It is not possible to pan the plot in the spatial dimension near the start-finish line. > > Is there an easy solution to this problem?
From: Thomas Schreiter on 6 Aug 2010 10:04 Hi, Joseph. The data are well formatted. The problem is the visualization. For example, let X denote the position of one vehicle over time traveling with constant speed, say X = [ 100 300 500 700 900 100 300 500 ]. Plot(X) connects the points (5,900) and (6,100). But this line does not reflect the trajectory of the vehicle!
From: Sean on 6 Aug 2010 10:43 "Thomas Schreiter" <t.schreiter(a)tudelft.nl> wrote in message <i3h4om$5td$1(a)fred.mathworks.com>... > Hi, Joseph. > > The data are well formatted. The problem is the visualization. For example, let X denote the position of one vehicle over time traveling with constant speed, say X = [ 100 300 500 700 900 100 300 500 ]. Plot(X) connects the points (5,900) and (6,100). But this line does not reflect the trajectory of the vehicle! This may (or may just as easily not) be what you're looking for: doc feather
From: Roger Stafford on 6 Aug 2010 16:00
> "Thomas Schreiter" <t.schreiter(a)tudelft.nl> wrote in message <i3h1dp$s9o$1(a)fred.mathworks.com>... > > Hi, > > > > I have a 2D data set of vehicle trajectories, containing the position of every vehicle at every time step. This position refers to a location of a ringroad. A ringroad of 1000m length has a jump in its location numbering: After meter 999 you reach "the beginning" of the ringroad at meter 0 again, much like in a car race at the start-finish line.) > > > > Plotting these trajectories with the plot command leads to an ugly plot: > > (1.) The plot show large jumps near the start-finish line, caused by the linear interpolation of the plot function. Instead, I'd like to interpolate in a _circular_ manner. > > (2.) It is not possible to pan the plot in the spatial dimension near the start-finish line. > > > > Is there an easy solution to this problem? "Joseph " <don'twannapostit(a)nopers.com> wrote in message <i3h3j4$jah$1(a)fred.mathworks.com>... > I'm not sure I totally get this question but why not just wrap the data? In other words, add 1000m to your value ever time you get to the 999 -> 0 jump. - - - - - - - - - You can use matlab's 'unwrap' function to carry out Joseph's idea if you rescale your 1000 meter values to 2*pi. Let P be an array in which each column gives the successive positions of a corresponding vehicle. Q = 1000/(2*pi)*unwrap((2*pi/1000)*P); Then use Q for your plotting. This works provided no vehicle travels more than 500 meters between subsequent time points. Otherwise you would need something a little more sophisticated than 'unwrap' involving probable velocities and accelerations. It is assumed here that the vehicles are recorded at the same number of points. If the numbers of points are different you would have to do an 'unwrap' for each vehicle separately. Roger Stafford |