1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab quadv

  1. Aug 15, 2007 #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: Aug 15, 2007
  2. jcsd
  3. Aug 15, 2007 #2


    User Avatar
    Science Advisor
    Homework Helper

    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.
  4. Aug 16, 2007 #3
    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 Guass 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;
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?

Similar Discussions: Matlab quadv
  1. & vs. && for MATLAB (Replies: 2)

  2. Matlab concatenation (Replies: 2)

  3. Matlab and physics (Replies: 3)

  4. MATLAB problem (Replies: 1)

  5. MATLAB histogram (Replies: 3)