PIVで入手したベクトルデータを使用して,可視化した格子を変形させたい
    조회 수: 13 (최근 30일)
  
       이전 댓글 표시
    
OpenPIV-Matlabで32*40=1280個の格子点上の速度ベクトルデータを,取得しています。動画から取得したため,時系列でデータを取得しています。そこで,取得した速度ベクトルデータを変位へ変換して考えて,画面上に作成した格子点を変位分動かす方法を教えていただきたいです。添付画像を参照してください。
댓글 수: 2
  Atsushi Ueno
      
 2023년 10월 8일
				動画において複数の粒子から一つを特定する事は難しいですが、取得済の速度ベクトルデータを扱う事は簡単です。速度ベクトルデータをMATLABの行列データにして、画面上に作成した格子点(これもMATLABの行列データ)に加算すれば良いのです。
답변 (1개)
  Atsushi Ueno
      
 2023년 10월 10일
        
      이동: Atsushi Ueno
      
 2023년 10월 14일
  
      例えばこのような例はどうでしょうか。格子状の座標に対し、適当に作った速度←加速度←加加速度を加算しながらプロットを繰り返すと、粒子が動き回る様に見えます。
N = 50; % 格子のサイズ
[rx,ry] = meshgrid(-(N/2-1):N/2,-(N/2-1):N/2); % 格子状の座標を作成
vx = zeros(N,N); vy = zeros(N,N);
ax = zeros(N,N); ay = zeros(N,N);
p = scatter(rx(:),ry(:),1); % 散布図に格子状の座標をプロット
xlim([-N/2,N/2]); ylim([-N/2,N/2]);
for k = 1:100 % 適当な回数繰り返す
    kx = (rand(N,N)-0.5)*0.001; % 加加速度をランダムに設定
    ky = (rand(N,N)-0.5)*0.001; % 加加速度をランダムに設定
    ax = ax + kx; ay = ay + ky; % 加加速度を加速度に加算
    vx = vx + ax; vy = vy + ay; % 加速度を速度に加算
    rx = rx + vx; ry = ry + vy; % 速度を格子状の座標に加算
    p.XData = rx(:); % 加算された格子状の座標をグラフのデータに反映
    p.YData = ry(:); % 加算された格子状の座標をグラフのデータに反映
    drawnow % グラフを再描画
end
댓글 수: 2
  Atsushi Ueno
      
 2023년 10월 14일
				
      이동: Atsushi Ueno
      
 2023년 10월 14일
  
			>この際、散布図上の各々の点を(i,j)で指定することは出来ますか?
N = 20; i = 11; j = 11; % 格子サイズ、特定の点を指定するインデックス
[rx,ry] = meshgrid(-N/2:N/2,-N/2:N/2); % 格子状の位置座標
xy = cat(3,rx,ry,zeros(N+1,N+1,4)); % XY位置/XY速度/XY加速度
p1 = mesh(zeros(N+1,N+1)); 
view(2); hold on
p2 = plot3(xy(i,j,1),xy(i,j,2),0,'.','MarkerSize',15);
xlim([-N/2,N/2]); ylim([-N/2,N/2]); 
for k = 1:500 % 格子の各点にランダムな加速度を与える
    xy(:,:,5:6) = (rand(N+1,N+1,2)-0.5)*0.001; % 加速度
    xy(:,:,1:4) = xy(:,:,1:4) + xy(:,:,3:6); % 加速度→速度→位置
    p1.XData = xy(:,:,1); p1.YData = xy(:,:,2);
    p2.XData = xy(i,j,1); p2.YData = xy(i,j,2);
    drawnow % グラフを再描画
end
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
