MATLAB Answers

quiver関数で描​く矢印の大きさを一定​にする方法はあります​か?

17 views (last 30 days)
chisato hara
chisato hara on 22 May 2020
Commented: Kenta on 22 May 2020
quiver関数で矢印をプロットすると各ベクトルの大きさによって矢印の大きさが変わります。プロットするベクトルの最大値と最小値に開きがある場合、最小値のベクトルは小さく表示され、どちらに矢印が向いているかわかりません。そこで、矢印の大きさをベクトルの大きさによらず固定する方法があれば教えていただけないでしょうか? もしくは、‘MaxHeadSize'で矢印の大きさの最大値は設定できますが、矢印の大きさの最小値’MinHeadSize'のようなもので設定できないかと思っております。

  0 Comments

Sign in to comment.

Accepted Answer

Kenta
Kenta on 22 May 2020
こんにちは、各所でのベクトルの大きさを計算し、その長さで割り算すれば同じ長さになると思うのですがいかがでしょうか。例えば下の例だと、何もしないのが左側の絵で、右側は各ポイントで、その点の長さでスケールを変えることで同じ長さにしています。
clear;clc;close all
[X,Y] = meshgrid(-2:.2:2);
Z = X.*exp(-X.^2 - Y.^2);
[DX,DY] = gradient(Z,.2,.2);
headSize=sqrt(DX.^2+DY.^2);
figure
subplot(1,2,1)
contour(X,Y,Z)
hold on
quiver(X,Y,DX,DY)
hold off
subplot(1,2,2)
contour(X,Y,Z)
hold on
quiver(X,Y,DX./headSize,DY./headSize)
hold off

  4 Comments

Show 1 older comment
Kenta
Kenta on 22 May 2020
なるほど、「矢印の大きさ」とは、矢印の長さではなく、矢印の三角形部分の大きさということですね。
三角形部分のみをquiver関数で制御するのは難しい気がします。例えば、矢印の長さについてパーセンタイルを計算し、小さな10%以下を同じ短い長さにする、などは代替案になりそうですがいかがでしょうか。それか、matlab answersの英語で探せばなにかあるかもしれません。
chisato hara
chisato hara on 22 May 2020
Kenta様
海外の方で同じ質問されている方がいました。以下のサイトに解決方法が示されていましたので試してみます。
親切に対応いただきまして、ありがとうございました。
Kenta
Kenta on 22 May 2020
教えていただきありがとうございます。確かにいろいろとアレンジできそうですね。

Sign in to comment.

More Answers (0)

Tags