How can I average the vectors within the grid cell?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ashfaq Ahmed
il 7 Feb 2022
Commentato: Turlough Hughes
il 7 Feb 2022
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?
0 Commenti
Risposta accettata
Turlough Hughes
il 7 Feb 2022
% 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 Commenti
Turlough Hughes
il 7 Feb 2022
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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Vector Fields in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!