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

8 visualizzazioni (ultimi 30 giorni)
Hello I want to color code a 3D vector field based on the vectors direction and not their magnitude. I appreciate for any help.

Risposte (2)

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

Accedi per commentare.


Gautam
Gautam il 23 Ott 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;

Categorie

Scopri di più su Color and Styling 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!

Translated by