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

9 visualizaciones (últimos 30 días)
Masih Jorat
Masih Jorat el 3 de Dic. de 2016
Respondida: Gautam el 23 de Oct. de 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.

Respuestas (2)

KSSV
KSSV el 3 de Dic. de 2016
Well calculate the direction and use this data instead of magnitude.
  1 comentario
Masih Jorat
Masih Jorat el 3 de Dic. de 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.

Iniciar sesión para comentar.


Gautam
Gautam el 23 de Oct. de 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;

Categorías

Más información sobre Color and Styling en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by