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

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

 Respuesta aceptada

Kenta
Kenta el 22 de Mayo de 2020

2 votos

こんにちは、各所でのベクトルの大きさを計算し、その長さで割り算すれば同じ長さになると思うのですがいかがでしょうか。例えば下の例だと、何もしないのが左側の絵で、右側は各ポイントで、その点の長さでスケールを変えることで同じ長さにしています。
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 comentarios

chisato hara
chisato hara el 22 de Mayo de 2020
Kenta様。コメントいただきありがとうございます。
この方法だと、ベクトルの向きは認識できるようになりましたが、強弱がわからなくなってしまします。
矢印の長さのスケールは変えずに、矢印の傘のサイズだけ一定にする方法があれば教えていただけないでしょうか。
質問の意図が不明確で申し訳ございません。
Kenta
Kenta el 22 de Mayo de 2020
なるほど、「矢印の大きさ」とは、矢印の長さではなく、矢印の三角形部分の大きさということですね。
三角形部分のみをquiver関数で制御するのは難しい気がします。例えば、矢印の長さについてパーセンタイルを計算し、小さな10%以下を同じ短い長さにする、などは代替案になりそうですがいかがでしょうか。それか、matlab answersの英語で探せばなにかあるかもしれません。
chisato hara
chisato hara el 22 de Mayo de 2020
Kenta様
海外の方で同じ質問されている方がいました。以下のサイトに解決方法が示されていましたので試してみます。
親切に対応いただきまして、ありがとうございました。
Kenta
Kenta el 22 de Mayo de 2020
教えていただきありがとうございます。確かにいろいろとアレンジできそうですね。

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

el 22 de Mayo de 2020

Comentada:

el 22 de Mayo de 2020

Community Treasure Hunt

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

Start Hunting!