how to color code a vector field based on the vector direction?

12 vues (au cours des 30 derniers jours)
Masih Jorat
Masih Jorat le 3 Déc 2016
Réponse apportée : Gautam le 23 Oct 2024
Hello I want to color code a 3D vector field based on the vectors direction and not their magnitude. I appreciate for any help.

Réponses (2)

KSSV
KSSV le 3 Déc 2016
Well calculate the direction and use this data instead of magnitude.
  1 commentaire
Masih Jorat
Masih Jorat le 3 Déc 2016
thanks,
I used the quiver3(x,y,z,u,v,k) to plot the vector field, so u,v, and k are my direction 3 by 3 matrices. is there any way to use contourf or image and direction matrices to plot the a color coded vector field on lets say y-z plane? thank you for your help.

Connectez-vous pour commenter.


Gautam
Gautam le 23 Oct 2024
You can map the direction to colors using a colormap and use the direction cosines or angles to determine the color.
Here's a sample code
% Define a grid
[x, y, z] = meshgrid(linspace(-5, 5, 10), linspace(-5, 5, 10), linspace(-5, 5, 10));
% Define the vector field
Vx = -y;
Vy = x;
Vz = zeros(size(z));
% Calculate the direction angle
theta = atan2(Vy, Vx);
% Normalize the angle to [0, 1] for colormap
theta_normalized = (theta - min(theta(:))) / (max(theta(:)) - min(theta(:)));
cmap = hsv;
figure;
hold on;
% Plot each vector with color corresponding to its direction
for i = 1:numel(x)
% Determine color index
color_idx = round(theta_normalized(i) * (size(cmap, 1) - 1)) + 1;
% Plot vector
quiver3(x(i), y(i), z(i), Vx(i), Vy(i), Vz(i), 'Color', cmap(color_idx, :), 'AutoScale', 'on');
end
% Set colorbar and colormap
colormap(cmap);
colorbar;
xlabel('X');
ylabel('Y');
zlabel('Z');
axis equal;
hold off;

Catégories

En savoir plus sur Color and Styling dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by