# Non linearly spaced points using a time vector in MATLAB

3 views (last 30 days)
Nick on 11 Aug 2016
Commented: Nick on 12 Aug 2016
I have a vector which contains a trajectory for an end effector of a robot. During each sample the next point in the trajectory is sent to the device. In other words, the trajectory vector only contains the points in 3D-space which are spaced linearly using linspace().
I, on the other hand, don't want them to be spaced linearly. I want to create a time vector which defines the spacing of the points. So if I would use a non linear curve (S-Curve for example) the beginning and the end of the trajectory should be spaced closer to each other whereas the points in between have a larger spacing. This should result in slower and smoother movements of the robot at the beginning and the end of the trajectory.
Is there a function in MATLAB similar to linspace which accepts, for example, a time vector and based on that generates a vector of non-linearly spaced points?
If not, how would I go about creating something like this?
##### 2 CommentsShowHide 1 older comment
Nick on 12 Aug 2016
You are correct. To visualize this, all the trajectories are spaced according to a straight diagonal line which is a time vs. samples plot.
I want to create something which accepts any time vs. samples curve which defines how fast certain samples (and their respective interpolated values) should be played back.
For instance I might want to play back the first few 100 samples over a longer period of time and afterwards play them back at much faster rates. The time vs. sample curve would look like an exponential function.
I can hard code the interpolation function with a predefined time/sample curve but I want to create a function which accepts a linearly spaced vector and a time/sample matrix and returns the newly interpolated vector.
The timeseries object can do that something like that, but it's very slow and it has to work in a real-time environment (codegen).