How do I plot a hodograph?

62 vues (au cours des 30 derniers jours)
Russ
Russ le 25 Nov 2012
Commenté : Nathan Anderson le 10 Mar 2018
I can't seem to find a function in Matlab that allows me to plot a hodograph. Any ideas?
  1 commentaire
Ashim
Ashim le 17 Juil 2014
Did you find a solution to plot a hodgraph. I seem to find a solution to plot the points but since i am not a Matlab expert. I cannot find a way to connect the points within the hodograph...I am positing a minimal example here
Ws = 15.*rand(10,1);
Wd = 360.*rand(10,1);
H = (20:20:200)';
Wd = double(Wd);
Ws = double(Ws);
Wd = Wd.*(pi/180);
[WdX, WsY] = pol2cart(Wd, Ws);
polar(WdX, WsY,':b*');
It would be great if you would write the solution you came to. I am unable to think of something to connect the points within the polar plot

Connectez-vous pour commenter.

Réponses (2)

bym
bym le 25 Nov 2012
do
compass
or
feather
work?
  1 commentaire
Ashim
Ashim le 22 Oct 2014
Modifié(e) : Ashim le 22 Oct 2014
I do have an answer to connect the points here is the simple Hodograph example. However, i am not sure if the wind direction is correctly displayed. I am sure i am doing something wrong there. Any suggestions to make the wind directions correct??
if true
%code
Ws = [6.4;6.7;7.4;7.4;7.7;7.9;8.5;8.9;9.1;9.5];
Wd = [185;186;183;186;186.5;187;191;192;197;193];
H = [40;52;60;80;100;108;140;160;180;200];
Wd = Wd.*(pi/180);
Ws = Ws;
[U, V] = pol2cart(Wd, Ws);
polar(U, V,'ob');
text(U, V, num2str(H));
%WdXi = flipud((min(WdX):0.1:max(WdX))');
%WsYi = interp1(WdX, WsY, WdXi,'spline' );
%hold on;
%polar(WdXi, WsYi);
t = 1:numel(Ws);
ts = 1:1/numel(Ws):numel(Ws);
xs = pchip(t,U,ts);
ys = pchip(t, V, ts);
hold on;
polar(xs, ys,'r');
end

Connectez-vous pour commenter.


Nathan Anderson
Nathan Anderson le 10 Mar 2018
Modifié(e) : Nathan Anderson le 10 Mar 2018
A few subtle changes are required. First, decide on coordinates. Do you want to plot using mathematical conventions (counterclockwise from East), or meteorological (clockwise from North)? Also note that in meteorology, degrees are the direction the wind is blowing FROM. See http://colaweb.gmu.edu/dev/clim301/lectures/wind/wind-uv
On a hodograph, the wind is blowing from the origin to the position on the hodograph, so a 180 degree rotation is required. I'm assuming we chose meteorological winds (so Wd = 185 is from the SSW to NNE), but are confined to the limitations of the polar plot (math direction), which we'll flip later.
Ws = [6.4;6.7;7.4;7.4;7.7;7.9;8.5;8.9;9.1;9.5];
Wd = [185;186;183;186;186.5;187;191;192;197;193];
Wd = Wd-180; % Wind dir on hodograph will be opposite the usual MET convention (blowing from, not to)
H = [40;52;60;80;100;108;140;160;180;200];
Wd = Wd.*(pi/180);
[U, V] = pol2cart(Wd, Ws);
polar(Wd,Ws,'ob'); % Don't use U/V here...they are cartesian.
text(U, V, num2str(H)); % Use U/V here...for text placement.
t = 1:numel(Ws);
ts = 1:1/numel(Ws):numel(Ws);
xs = pchip(t,U,ts);
ys = pchip(t,V,ts);
hold on;
[th,r] = cart2pol(xs,ys); % Need to convert back to polar, here!
polar(th, r,'r');
view([90 -90]) % Correct the view angle, so we see directions as clockwise from North. I'm sure other ways exist, but this was a fudge to get around the fact that "polar" is not too good with met directions.
Enjoy.
  1 commentaire
Nathan Anderson
Nathan Anderson le 10 Mar 2018
Who are we kidding? We need more helicity.
Ws = [10;15;15;18;20;25;30;30;30;30];
Wd = [90;130;150;170;190;200;210;230;250;270];

Connectez-vous pour commenter.

Catégories

En savoir plus sur Weather and Atmospheric Science dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by