stream2の計算ができない原因

2 views (last 30 days)
知真 梶山
知真 梶山 on 24 Oct 2023
Commented: 知真 梶山 on 25 Oct 2023
stream2関数を使用した流線の計算方法に関する質問です.
ベクトル場の流線をstream2で計算しようとしたところ,一部分のみしか計算できず困っています.
ベクトルデータの座標 x,y(100×100の2-D行列)とベクトルデータの成分u,v(NaNを含む)があります.
これらのデータは以下のfigureのようになっており,このベクトル場の流線を計算したいです.
load data.mat
p = figure(1)
p =
Figure (1) with properties: Number: 1 Name: '' Color: [1 1 1] Position: [671 558 577 433] Units: 'pixels' Use GET to show all properties
quiver(x,y,u,v) % ベクトル場の表示
p.Position(3:4) = [735 735];
流線の開始位置をstartX,startYとし,stream2で計算しようとしたところ,開始位置によって計算できる場合とできない場合があります.
流線の開始位置はベクトル場の左端と下辺です.
vert = stream2(x,y,u,v,startX,startY); % 流線の計算
q = figure(2)
q =
Figure (2) with properties: Number: 2 Name: '' Color: [1 1 1] Position: [671 558 577 433] Units: 'pixels' Use GET to show all properties
quiver(x,y,u,v) % ベクトル場の表示
hold on
plot(startX,startY,'o') % 流線の開始位置
streamline(vert) % 流線の表示
hold off
q.Position(3:4) = [735 735];
ベクトル場は全体的に右上方向を向いており,流線を計算すること自体は可能だと思うのですが,下辺を開始位置としている場合なぜか計算ができていません.
これらの原因がわかる方はいらっしゃいますか?
  2 Comments
Atsushi Ueno
Atsushi Ueno on 24 Oct 2023
原因は分かんないですが、Y座標をほんの少しずらすと”流れに乗り”ました。
websave("data.mat","https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1519811/data.mat");
load data.mat
startY = startY + 0.001; % <<<---これ
vert = stream2(x,y,u,v,startX,startY); % 流線の計算
quiver(x,y,u,v); % ベクトル場の表示
hold on
plot(startX,startY,'o'); % 流線の開始位置
streamline(vert); % 流線の表示
hold off
知真 梶山
知真 梶山 on 25 Oct 2023
回答ありがとうございます.
こちらの方法で解決できそうです.
ありがとうございました.

Sign in to comment.

Answers (0)

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!