How can I average the vectors within the grid cell?

조회 수: 3(최근 30일)
Hi altruists,
Suppose, I generated this simple vetor field using these few lines of codes:
[X,Y] = meshgrid(0:6,0:6);
U = 0.25*X;
V = 0.5*Y;
[Xq,Yq] = meshgrid(-6:0.25:6);
Uq = interp2(X,Y,U,Xq,Yq);
Vq = interp2(X,Y,V,Xq,Yq);
figure,
quiver(Xq,Yq,Uq,Vq,'autoscale','on');
grid on
title('Vector field','fontweight','bold', 'fontsize',20);
So, I get this grid -
Now - without considering 'all' these vectors, I simply want to take only one vector from each of the grid cell. The vector should be the average of all the vectors within that grid cell. The outcome should be like this -
So, the each of the grid cell is containing only one 'averaged' vector. In picture, it's shown in red (the value is exaggerated). Ciould you please give me an idea on how can I possibly do it?

채택된 답변

Turlough Hughes
Turlough Hughes 2022년 2월 7일
% code provided in the question
[X,Y] = meshgrid(0:6,0:6);
U = 0.25*X;
V = 0.5*Y;
[Xq,Yq] = meshgrid(0:0.25:6);
Uq = interp2(X,Y,U,Xq,Yq);
Vq = interp2(X,Y,V,Xq,Yq);
figure,
quiver(Xq,Yq,Uq,Vq,'autoscale','on');
grid on
title('Vector field','fontweight','bold', 'fontsize',20);
axis equal
You could block process the data taking the averages of each block as follows
m = 5; n = 5;
f = @(D,m,n) blockproc(D,[m n],@(block_struct) mean(block_struct.data,'all'));
Xd = f(Xq,m,n);
Yd = f(Yq,m,n);
Ud = f(Uq,m,n);
Vd = f(Vq,m,n);
hold on, quiver(Xd,Yd,Ud,Vd,'Color','red')
Is that what you meant?
  댓글 수: 3
Turlough Hughes
Turlough Hughes 2022년 2월 7일
The red arrows start at the center of groups of 5 by 5 blue vectors from the original plot, and the undelying data defining the red vectors is in fact the average from those 5 by 5 vector groups. However, the plot is very misleading in that regard because the vectors were autoscaled by quiver(). Make sure to turn 'autoscale','off', if you want to compare the two plots.

댓글을 달려면 로그인하십시오.

추가 답변(0개)

범주

Find more on Vector Fields in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by