How do I plot a hodograph?
53 次查看(过去 30 天)
显示 更早的评论
I can't seem to find a function in Matlab that allows me to plot a hodograph. Any ideas?
1 个评论
Ashim
2014-7-17
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
回答(2 个)
bym
2012-11-25
do
compass
or
feather
work?
1 个评论
Ashim
2014-10-22
编辑:Ashim
2014-10-22
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
Nathan Anderson
2018-3-10
编辑:Nathan Anderson
2018-3-10
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 个评论
Nathan Anderson
2018-3-10
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];
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!