Add arrows to surface plot to represent wind direction
古いコメントを表示
Hi there,
I am seeing a lot of information about the quiverm function but I only have my wind direction data in degrees and not in the u and v components. Is there a simple way to project a matrix of wind direction values (360 degrees) onto a sufacem plot? Perhaps there is a way to add and arrow and align it based on the wind direction value? I do not want to add magnitude as well, just direction.
Many thanks,
7 件のコメント
Kirby Fears
2015 年 9 月 23 日
編集済み: Kirby Fears
2015 年 9 月 23 日
The built-in functions "cosd" and "sind" apply cosine and sine to an angle specified in degrees.
u=cosd(deg);
v=sind(deg);
These will give you the unitary direction of wind. Check out the documentation for quiver. An excerpt is below.
A quiver plot displays velocity vectors as arrows with components (u,v) at the points (x,y).
For example, the first vector is defined by components u(1),v(1) and is displayed at the point x(1),y(1).
quiver(x,y,u,v) plots vectors as arrows at the coordinates specified in each corresponding pair of elements in x and y. The matrices x, y, u, and v must all be the same size and contain corresponding position and velocity components.
mashtine
2015 年 9 月 23 日
Kirby Fears
2015 年 9 月 23 日
I don't see what you're trying to do in these two lines of sample code. What angle are you trying to convert to unit vector representation?
The angle you plugged into cosd and sind is 100 degrees. You can easily convert back and forth.
u=cosd(100);
v=sind(100);
originalAngle=atan2d(v,u)
originalAngle =
100
Kirby Fears
2015 年 9 月 23 日
編集済み: Kirby Fears
2015 年 9 月 23 日
The "x" component is typically denoted as u and the "y" component as v. In the link you posted, it's the other way around. Moreover, there's no reason to add 180 at the end. The NCL website seems to be counting degrees in some nonstandard way. In trigonometry you start counting from 0 degrees (in the (1,0) direction) and proceed counter-clockwise around the unit circle. To fix your earlier calculation:
>> r2d = 45.0/atan(1.0);
>> atan2(sind(100),cosd(100))*r2d
ans =
100
When it comes to using Matlab functions, I think you'll find the Mathworks documentation more helpful than the NCL website.
If this answers your question, please remember to "Accept" my answer so the issue is closed.
mashtine
2015 年 9 月 23 日
Kirby Fears
2015 年 9 月 23 日
-179 is the correct answer.
-179+360=181
The NCL website adds 180 to this, which would be
-179+180=1, which is incorrect.
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Vector Fields についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!