## Alpha and beta extraction on an ellipse...

on 21 Oct 2012

### Pedro Villena (view profile)

I have a program I am working on that uses the "Liouville's theorem" for an ellipse, similar to the first slide of the web page, " http://www-pnp.physics.ox.ac.uk/~delerue/accelerator_option/6_emittance.pdf ".

` I need to extract the alpha and beta.  `

I have images that come in that have the ellipse on them, I extract the x and y projections to give x and x'. This is then used to produce the alpha and beta of the image for the ellipse.

So far I have a program that does this. I'm at the point I need to make it faster and decrease the time it takes to process.

I have two questions:

Does matlab have a prebuilt function that does this already (extract data from an ellipse or alpha and beta)? (that make life easier you know!)

If not, then how can I make this code below work faster... (this is a snip of code that seems to take a bit of time to solve when it has lots of data going through it):

ParNum = 3;

NumPoints = 26;

ery = 1.0e-014 *[ 0.2081 0.2125 0.2100 0.1962 0.2213 0.2027 0.1985 0.2048 0.168 0.1859 0.1607 0.1713 0.1502 0.1421 0.1383 0.1657 0.1435 0.1365 0.1342 0.1445 0.1354 0.1394 0.1248 0.1265 0.1315 0.1396];

y = 1.0e-005 *[0.3221 0.3266 0.3240 0.3097 0.3356 0.3165 0.3121 0.3187 0.2798 0.2988 0.2711 0.2829 0.2592 0.2497 0.2453 0.2767 0.2513 0.2432 0.2404 0.2526 0.2418 0.2466 0.2290 0.2312 0.2372 0.2468];

x = [-0.8327 -0.7981 -0.7636 -0.7290 -0.6944 -0.6598 -0.6252 -0.5906 -0.5560 -0.5214 -0.4868 -0.4522 -0.4177 -0.3831 -0.3485 -0.3139 -0.2793 -0.2447 -0.2101 -0.1755 -0.1409 -0.1063 -0.0718 -0.0372 -0.0026 0.0320];

for k=1:ParNum

`    for i=1:NumPoints`
`        f(k)=power(x(i),k-1);`
`        beta_element(k,i)=y(i)*f(k)/(ery(i)*ery(i));`
`        beta(k)=sum(beta_element(k,:));`
`    end`

end

for k=1:ParNum

`    for l=1:ParNum`
`        for i=1:NumPoints`
`            f(k)=power(x(i),k-1);`
`            f(l)=power(x(i),l-1);`
`            alpha_element(k,l,i)=f(k)*f(l)/(ery(i)*ery(i));`
`            alpha(k,l)=sum(alpha_element(k,l,:));`
`        end`
`    end`

end

Here is the output of alpha and beta...

K>> alpha

alpha =

```1.0e+031 *
```
`    1.0549   -0.3348    0.1687`
`   -0.3348    0.1687   -0.0997`
`    0.1687   -0.0997    0.0646`

K>> beta

beta =

```1.0e+025 *
```
`    2.7766   -0.9531    0.5016`

Any help or advice on this matter is much appreciated!

Thank you,

Chris

## Products

### Pedro Villena (view profile)

on 22 Oct 2012
```beta_element = zeros(ParNum,NumPoints);
beta_factor = y./(ery.^2);
alpha_element = zeros(ParNum,ParNum,NumPoints);
for k = 1:ParNum,
f = x.^(k-1);
beta_element(k,:) = beta_factor.*f;
alpha_factor = f./(ery.^2);
for l=1:ParNum,
alpha_element(k,l,:) = alpha_factor.*x.^(l-1);
end
end
beta = sum(beta_element,2)';
alpha = sum(alpha_element,3);
```

Chris E.

### Chris E. (view profile)

on 22 Oct 2012

Thank you for the help! good way about it...