quiverでのベクトルの間引き

quiverでのベクトルの描画時にベクトルの間引きを行いたいです.
ベクトルの数を半分にして図の見栄えを変更したいです.
イメージとしてはstreamslilceのdensityを0.5にしたようなものです(流線ではなく,ベクトルにしたい).

3 Comments

quiver関数、streamslice関数を見比べて、回答に困ってしまいました。ベクトルデータを間引けばやりたい事が出来る様に思えますが、それはベクトルデータの並び方によりけりです。万能な方法はありません。
>ベクトルの数を半分にして図の見栄えを変更したいです
単純にベクトルデータの添え字を(1:2:end)とすればデータ量が半分になります。しかしそれで下記の様に良い感じに間引かれるとは限りません。下記の様にベクトルデータが格子状に配置された場合でも、格子サイズが偶数の場合は偶数行だけが落とされ、奇数の場合はチェス盤の黒マスに当たるデータが落とされます。ベクトルデータの座標の並びがランダムだったりすると、どこが落とされるか想像出来ません。
[X,Y] = meshgrid(-pi:pi/8:pi,-pi:pi/8:pi); % pi/8をpi/4にするとどこが間引かれたか良くわかります
U = sin(Y);
V = cos(X);
quiver(X,Y,U,V)
quiver(X(1:2:end),Y(1:2:end),U(1:2:end),V(1:2:end))
Atsushi Ueno
Atsushi Ueno on 13 Jun 2022
streamslice関数では流線を生成するstream2関数が呼ばれており、その中身(stream3c())は読めません。
一つ言える事は「流線データを間引く」処理の実態は補間する関数だという事です。従って元のベクトルデータの密度よりも荒い/細かい流線データを自在に生成する事が出来ます。
対してベクトルデータは離散的な座標とベクトルサイズだけの情報なので「流線データの密度を変更する」様な事を容易に実現出来ません。
湧希 櫻井
湧希 櫻井 on 16 Jun 2022
ご回答ありがとうございます.
quiverとstreamlineの違いについてよく分かりました.
ベクトルデータに手を加えるか,データの出力方式自体を変更するなどして対応したいと思います.

Sign in to comment.

Answers (0)

Products

Release

R2021b

Asked:

on 13 Jun 2022

Commented:

on 16 Jun 2022

Community Treasure Hunt

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

Start Hunting!