quiverでのベクトルの間引き

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

3 Commenti

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 il 13 Giu 2022
streamslice関数では流線を生成するstream2関数が呼ばれており、その中身(stream3c())は読めません。
一つ言える事は「流線データを間引く」処理の実態は補間する関数だという事です。従って元のベクトルデータの密度よりも荒い/細かい流線データを自在に生成する事が出来ます。
対してベクトルデータは離散的な座標とベクトルサイズだけの情報なので「流線データの密度を変更する」様な事を容易に実現出来ません。
湧希 櫻井
湧希 櫻井 il 16 Giu 2022
ご回答ありがとうございます.
quiverとstreamlineの違いについてよく分かりました.
ベクトルデータに手を加えるか,データの出力方式自体を変更するなどして対応したいと思います.

Accedi per commentare.

Risposte (0)

Prodotti

Release

R2021b

Richiesto:

il 13 Giu 2022

Commentato:

il 16 Giu 2022

Community Treasure Hunt

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

Start Hunting!