MATLAB Answers

How to plot magnitude and directions between 2 points?

5 views (last 30 days)
Hi,
I have a set of stations coordinates in a text file. The stations coordinates consist of positions of 2 points (X1, Y1) and (X2, Y2) at 50 stations. How do I plot/visualize the magnitude and direction of the stations coordinate to see the the changes in distance and direction?
Basically I want the plot to look like this [x1, y1]--------->[x2, y2] (with correct magnitude and direction) but for 50 stations.
I have tried the function quiver, but still cannot plot all the 50 stations.
Can somebody show me how to plot the magnitude and direction for 50 stations?
Thank you.

  2 Comments

darova
darova on 9 Dec 2019
Can you attach your attempts? And how do you want magnitude and direction to look like?
Adilla Zulkifli
Adilla Zulkifli on 9 Dec 2019
Attached is the input file in text file format. I would like to have Point 1A (X2, Y2) with magnitude and direction towards Point 1B (X1, Y1) which looks like an arrow. But the total of points I have are 50. So basically, the plot is supposed to have 50 arrows with magnitude and direction.
I have already tried using this coding but it doesn't work ;
data = load ('Input.txt');
[row, col] = size (data);
Y2 = data (:,1);
X2 = data (:,2);
Y1 = data (:,3);
X1 = data (:,4);
format long
delta_X = X2 - X1;
delta_Y = Y2 - Y1;
magnitude = sqrt(((delta_X).^2)+((delta_Y).^2));
format short
direction = wrapTo360(radtodeg(atan2(delta_X,delta_Y)));
P1 = [X2 Y2];
P2 = [X1 Y1] ;
DP = P2-P1;
figure(1)
quiver(P1(1),P1(2),DP(1),DP(2),0)
grid

Sign in to comment.

Accepted Answer

darova
darova on 9 Dec 2019
Edited: darova on 9 Dec 2019
try this (not tested)
data = load ('Input.txt');
[row, col] = size (data);
Y2 = data (:,1);
X2 = data (:,2);
Y1 = data (:,3);
X1 = data (:,4);
delta_X = X2 - X1;
delta_Y = Y2 - Y1;
magnitude = sqrt(((delta_X).^2)+((delta_Y).^2));
cm = jet(50); % create colormap
ind = 1 + round(magnitude/max(magnitude)*49); % convert magnitude to index
plot(0,0)
hold on
for i = 1:length(X1)
quiver(X1(i),Y(i),delta_X(i),delta_Y(i),'color',cm(ind(i)))
end
hold off

  5 Comments

Show 2 older comments
Adilla Zulkifli
Adilla Zulkifli on 10 Dec 2019
The error is no longer persists. I only need to scale the delta_X and delta_Y. Due to small displacement, the arrow can't really be seen. Thank you for your help.

Sign in to comment.

More Answers (0)

Sign in to answer this question.