7 views (last 30 days)

Hello everyone,

I need help in plotting a 3-D unit vector. I was trying to use the "quiver3" command but could n't succeed. Any help or useful suggestions in this regard would be highly appreciated.

The details are:

I have a vector “r” with three components “x”, “y” and “z”. By definition, the unit vector of any vector is that vector divided by its magnitude. What I need to obtain is the corresponding unit vector in 3-D space in terms of arrows spread over x, y, and z coordinates.

Thanks.

clear all

close all

clc

N=101;

x=linspace(-10,10,N);

y=x;

z=y;

for i=1:length(x)

for j=1:length(y)

for k=1:length(z)

r_vec(i,j,k)=x(i)+y(j)+z(k);

r_mag(i,j,k)=sqrt(x(i).^2+y(j).^2+z(k).^2);

r_unit(i,j,k)=r_vec(i,j,k)./r_mag(i,j,k);

end

end

end

KSSV
on 30 Jul 2020

Edited: KSSV
on 30 Jul 2020

You need not to use that complex, time consuming loop to get what you want.

clear all

close all

clc

N=101;

x=linspace(-10,10,N)';

y=x;

z=y;

r_vec = [x y z] ;

r_mag = sqrt(x.^2+y.^2+z.^2) ;

r_unit = r_vec./r_mag ;

quiver3(x,y,z,r_unit(:,1),r_unit(:,2),r_unit(:,3))

KSSV
on 30 Jul 2020

Did you run the code?

A vector in 3D should have three components so the size 101*3 is correct. Magnitude is length of the vector, so it will be 101*1. We divide each component with this magnitude. Again r_unit will be a unit vector and it shall have three components so it;s size is 101*3. To check you can find the magnitude of r_unit, you will get all 1's.

u_mag = sqrt(r_unit(:,1).^2+r_unit(:,2).^2+r_unit(:,3).^2) ;

The code is all right. It works.

Opportunities for recent engineering grads.

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

Start Hunting!
## 0 Comments

Sign in to comment.