Finite Solenoid On-Axis Field in MATLAB

Click For Summary
SUMMARY

The discussion focuses on using MATLAB to compute the on-axis magnetic field of a finite solenoid using the quadv function. The formula for the magnetic field H(z) is derived from fundamental principles and involves integrating over the solenoid's length. Users encountered issues with matrix dimension mismatches when attempting to integrate a vector of distances. The solution involves modifying the integration approach and using the quad function instead of quadv for better compatibility with vector inputs.

PREREQUISITES
  • Understanding of finite solenoid magnetic field equations
  • Familiarity with MATLAB programming and function creation
  • Knowledge of numerical integration techniques in MATLAB
  • Basic concepts of magnetic fields and constants, such as the magnetic constant (μ₀)
NEXT STEPS
  • Learn about MATLAB's quad function for numerical integration
  • Explore MATLAB's array manipulation techniques to handle vector inputs
  • Study the derivation of magnetic field equations for solenoids
  • Investigate the use of global variables in MATLAB functions
USEFUL FOR

Researchers, engineers, and students working in electromagnetism, particularly those using MATLAB for simulations of magnetic fields in solenoids.

Mindscrape
Messages
1,854
Reaction score
1
Does anybody know how the quadv function works in matlab? I am trying to get a plot of the on axis field of a finite solenoid, so the formula (given I didn't make some stupid mistake deriving it, which is beside the point) should be:

[tex]H(z) = \int_{-L/2}^{L/2} \mu_0 \frac{NI}{2L} \frac{R^2}{((z-z')^2 + R^2)^{(3/2)}} dz'[/tex]

So I want it to integrate for every position from 0 to 100mm. The quad integration doesn't work because I have a vector, so I thought I would use quadv with the following mfile.

%function for thin finite solenoid
function Hz = hfield(z)

N = 10; %number of turns
I = 1; %current (amps)
a = 32.5*10.^-3; %radius of coil (m)
d = (0:0.1:100)*10^-3; %axis vector (m)
L = 10*10.^-3; %length of solenoid (m)
m = 1.25663706*10^-6; %magnetic constant
Hz = (m.*N.*I.*a.^2)./((2*L.*(a.^2+(d-z).^2).^(3/2))); %field to integrate

But when I try the function call

quadv(@Hfield, -5, 5);

Matlab says that there is a problem in the subtraction of matrix dimensions, which means that it doesn't like subtracting each array array element by the variable of integration z. I figured that it would go through the integration for each element of d, and integrate z, but apparently not? Does anybody know how to get it to do what I want it to do, which is integrate each time with with the corresponding element from the distance vector? Maybe I have to make my limits arrays too.
 
Last edited:
Physics news on Phys.org
set d as a global variable. Then you do a program file that calculates the integral for a value of d, store that in a vector, increase d, integrate, etc..

So remove the line with "d" from this function file.

And also, a = 32.5*10.^-3; isn't nicer do write 3.24e-2 ?

And use the normal quad.

I have not tried this, but I think this a way you can do it.
 
Yeah, I was afraid I might have to try something like this. The alternate method works fine, though it is inconvenient. I made this file, and everything checks out, about 2 Gauss in the middle of the solenoid.

%integrate hfield for a given distance array

function [Hval] = HInt(d)

%variables to use
L = 10^-2; %length of solenoid in meters
n = length(d); %find the number of elements in d
i = 1; %loop variable
global s; %make distance element global for field function

%now that loop is primed and ready, evaluate
while (i <= n)
s = d(1,i);
Hval(1,i) = quad(@Hfield,-L/2,L/2);
i = i+1;
end
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 3 ·
Replies
3
Views
5K
Replies
2
Views
3K
  • · Replies 15 ·
Replies
15
Views
2K