MATLAB: Difference of two 2-dimensional matrices

matrix

Dear all,
I have the x and y positions of a certain object at 1 second intervals in time. The x positions are stored inside a 1xn matrix, where n is the number of seconds for which the data was obtained. The y positions are also stored inside a 1xn matrix, where n is again the number of seconds for which the object was observed. Now I need to obtain the velocity of the object. I could obtain the x and y velocities separately and store them inside two new matrices by using the diff() function on both x and y position matrices, but I need the velocity of the object as a whole. Can anybody please advise what to do? Thanks.

Best Answer

There are actually at least a couple ways to go about this. In either situation, I would use both the hypot and gradient functions.
The first option is to use gradient after the distance calculations:
x = sort(rand(20,1)); % Create Data: ‘X’ Position
y = sort(rand(20,1)); % Create Data: ‘Y’ Position
t = sort(rand(20,1)); % Create Data: ‘Time’
xyd = hypot(x,y); % Pythagorean Theorem Distance Calculation
v = gradient(xyd, t); % Velocity
The second option is to use gradient first to calculate the individual x and y velocities, then use hypot to calculate the net velocity:
vx = gradient(x, t); % ‘X’ Velocity
vy = gradient(y, t); % ‘Y’ Velocity
vn = hypot(vx, vy); % ‘Net’ Velocity
The code is similar in both situations.
I would experiment with both to determine the most accurate calculation. The choice is yours.