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

8 Ansichten (letzte 30 Tage)
Masih Jorat
Masih Jorat am 3 Dez. 2016
Beantwortet: Gautam am 23 Okt. 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.

Antworten (2)

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

Melden Sie sich an, um zu kommentieren.


Gautam
Gautam am 23 Okt. 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;

Kategorien

Mehr zu Color and Styling finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by