quiver で描く矢印の長さを、自動スケーリングを行わずに調節する方法はありますか?
9 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2016 年 2 月 3 日
回答済み: MathWorks Support Team
2016 年 2 月 3 日
quiver 関数で矢印プロットを描く際、 scale = 0 を用いて表示されるベクトルのx成分とy成分の長さ(幅)は、x軸とy軸に使用されている目盛りの幅と同じ、すなわちベクトル強度をそのまま反映できるようです。ここで、例えば scale = 0.2 は「自動的にスケーリングされた長さの0.2倍を表示」するという意味だと理解していますが、そうではなく、「自動的なスケーリングを施さない場合で、その長さの0.2倍を表示」するためには、どのようにすればよいか教えてください。
採用された回答
MathWorks Support Team
2016 年 2 月 3 日
自動的なスケーリングを行わない設定と同時に、scale = 0.2 などとスケールの調整する機能は、MATLAB R2014 では提供されていません。
代替案として、例えば、共通の定数値で quiver 関数に与えるベクトルの大きさ自体を直接変更する方法が考えられます。
下記のスクリプトで4つのフィギュアが作成されます。
[x,y] = meshgrid(0:0.2:2,0:0.2:2);
% 描画するベクトル
u1 = cos(x).*y;
v1 = sin(x).*y;
% 2 倍の大きさのベクトル
u2 = 2*u1;
v2 = 2*v1;
% ベクトルのサイズをそのまま描画(scale = 0 と同値)
figure, quiver(x,y,u1,v1,'AutoScale','off')
figure, quiver(x,y,u2,v2,'AutoScale','off')
% 共通の値でベクトルのサイズを縮小し、その値を直接反映する矢印のサイズで描画
factor = 0.1;
figure, quiver(x,y,factor*u1,factor*v1,'AutoScale','off')
figure, quiver(x,y,factor*u2,factor*v2,'AutoScale','off')
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!