Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Help with Plotting Z-depth for given Magnetic Field intensity

Subject: Help with Plotting Z-depth for given Magnetic Field intensity

From: Frank

Date: 21 Jun, 2010 03:53:07

Message: 1 of 1

Greetings,

I have currently been using Bio-Savart Law to plot the magnetic field for a given Z-distance from the X-Y plane. I now want to look at the Z-Penetration for a given (constant) Magnetic Field Intensity (|B|), and am having trouble finding a way to visualize this in Matlab. The following code sample has what I've done so far.

clear
%Variables
% X0(a, b, c) = Defined as point distance 'd' from the xy-plane located along x-axis
% Bx = magnitude of magnetic field due to a single coil line
% vector1 = vector representing a single coil line
% vector2 = straight line vector between coilpoint and X0
% vector3 = straight line vector between coilpoint2 and X0
% coilpoints = matrix of points describing initial points of coil geometry
% coilpoints2 = 2nd matrix of coil points (final points)
% costheta1&2 = cosines of initial and final points of
%Generate X0 matrix of points
x = -30:.1:30;
AllMag = zeros(length(x),15);
for Z = 1:15
niters = length(x);
X0 = zeros(niters, 3);
Bx = zeros(niters,1);
for K = 1 : niters
  a = x(K);
  b = 0;
  c = Z;
  X0(K, :) = [a b c];
end
% X0 = [0, 0, 15];
% niters = 1;
coilpoints = [-14.5, 19, 0; -10.5, 15,0; -14.5, 19, 0; -10.5, 15, 0; -1.5, 19, 0; -5.5, 15,0; -14.5, -14,0; -10.5, -19,0];%22, 19, 0; 18, 15,0; 22, 19, 0; 18, 15, 0; 2, 19, 0; 6, 15,0; 22, -14,0; 18, -19,0];
coilpoints2 = [-14.5, -14, 0; -10.5, -19,0 ; -1.5, 19,0 ; -5.5, 15, 0; -1.5, -19, 0; -5.5, -14, 0; -5.5, -14, 0; 1.5, -19, 0];%22, -14, 0; 18, -19,0 ; 2, 19,0 ; 6, 15, 0; 2, -19, 0; 6, -14, 0; 6, -14, 0; -2, -19, 0];
mu0 = 4*pi*10^-7;
iters = length(coilpoints);
Bx = 0;
% Bx = zeros(iters);
count = 0;
totalB = zeros(niters,1);
for K = 1:niters
    for J = 1:iters
% costheta1 = ((coilpoints(J,1)-X1(K,1))^2+(coilpoints(J,2)-X1(K,2))^2+(coilpoints(J,3)-X1(K,3))^2)^(1/2)/(((coilpoints(J,1)-X0(K,1))^2+(coilpoints(J,2)-X0(K,2))^2+(coilpoints(J,3)-X0(K,3)))^2)^(1/2);
% costheta2 = ((coilpoints2(J,1)-X1(K,1))^2+(coilpoints2(J,2)-X1(K,2))^2+(coilpoints2(J,3)-X1(K,3))^2)^(1/2)/(((coilpoints2(J,1)-X0(K,1))^2+(coilpoints2(J,2)-X0(K,2))^2+(coilpoints2(J,3)-X0(K,3)))^2)^(1/2);
        vector1 = coilpoints2(J,:) - coilpoints(J,:);
        vector2 = X0(K,:) - coilpoints(J,:);
        vector3 = X0(K,:) - coilpoints2(J,:);
        costheta1 = dot(vector1,vector2)/(norm(vector1)*norm(vector2));
        costheta2 = dot(-vector1,vector3)/(norm(vector1)*norm(vector3));
        R = norm(cross(vector2,vector3)/norm(vector1));
            Bcomp = mu0/(4*pi*R)*[costheta1+costheta2];
% Bx(J,1) = Bx(J,1) + Bcomp;
        Bx = Bx +Bcomp;
        count = count+1;
    end
% totalB(K,1) = Bx(K,1);
        totalB(K,1) = Bx/10^-2;
        Bx = 0;
end
totalB;

totalMag = totalB + flipud(totalB);
count;
figure(1);
plot(x,totalMag, '.');
title('Magnetic field across X-axis');
xlabel('X Position (Meters)'); ylabel('|B-field| (Tesla)');
% legend('z = ');
hold on
end

I'd like to get the same format of graphs but ones that plot an Z value for a known B using the data I already have.
Thanks in advance for any help.

Tags for this Thread

No tags are associated with this thread.

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us