Register to reply 
Normalizing function to 16bit 
Share this thread: 
#1
Apr1014, 09:08 AM

P: 21

Hey there!
I want to normalise my function. It's a superlorentzian function and looks like this: A / ( B+ [ ( (xC)/x_{0} )^n ] + D A/B is maximal value of the function C is the horizontal transliteration of the function x_{0} refers to the width of the function (multiply this value by 8 and you have its width) n is the order of the function D is the vertical transliteration I want to normalise this function to it can be used for my algorithm that uses 16bit numbers. But how can I do this? I tried using normal normalisation (A  a_{minimal} / a_{max}  a_{min}) but that didn't work out for me. How can I normalise this function so it's output will use 16 bit numbers? 


#2
Apr1214, 01:12 AM

Mentor
P: 21,402

You didn't say whether your 16bit output values are signed or unsigned, so I arbitrarily chose unsigned. An unsigned 16bit integer has a range of 0 through 65,535. Here's your inequality: $$0 ≤ \frac{A}{B + (\frac{x}{x_0})^n} + D ≤ 65,535$$ Add D to all three members: $$D ≤ \frac{A}{B + (\frac{x}{x_0})^n} ≤ 65,535  D$$ Invert the fractions, which changes the direction of the inequalities: $$\frac{1}{D} ≥ \frac{B + (\frac{x}{x_0})^n}{A} ≥ \frac{1}{65,535  D} $$ Multiply all three members by A, and continue a step at a time until you get x all by itself in the middle. That will tell you the interval for your x values so that the output is no larger than 65,535. If the output can be negative, change the first line to 32,768 ≤ <your expression> ≤ 32,767 What you wrote is slightly different from the image you attached. What you wrote has x  C. It's a simple matter to change the above to include it. 


#3
Apr1514, 04:41 AM

P: 21

I included the C and isolated the x. But it isn't exactly in a formula form:
$$(\frac{A}{D}B)^(\frac{1}{n}){x_0}+C≤ x ≤ (\frac{A}{65,535D})^(\frac{1}{n}){x_0}+C$$ How can I turn this into a formula? If I want to use it for my algorithm I need to be able to plug my x in and get a normalized function out. Or are these the values that I need to use as my 'New Minimum' and 'New Maximum'? The problem with that however is that my function doesn't really have a minimum value. My superlorentzian function has a maximum of A/B and goes off nearing zero, but it doesn't actually become zero. So this is the usual normalization formula: $$xOldMinimum\frac{NewMaximum  NewMinimum}{OldMaximum  OldMinimum}+NewMinimum$$ I know the new Maximum (65535) and the new minimum (0). I also know the old maximum (A/B) but the new minimum can only be found using a limit. It goes off to 0, but never becomes zero. Is this is a problem? PS: I'm not that handy with Latex so I couldn't get the 1/n power to work 


#4
Apr1514, 01:28 PM

Sci Advisor
PF Gold
P: 1,850

Normalizing function to 16bit



#5
Apr1514, 03:04 PM

Mentor
P: 21,402

Presumably the parameters of your function  A, B, C, D, n, and x_{0} are known. If you substitute for them, it will give you the range of x values for which f(x) is between 0 and 65, 535. $$(\frac{A}{D}B)^{\frac{1}{n}}{x_0}+C ≥ x ≥ (\frac{A}{65,535  D})^{\frac{1}{n}}{x_0}+C$$ 


#6
Apr1614, 03:42 AM

P: 21

Thank you for your reply. The constants are indeed known. I have to find the actual values though, but for the sake of my algorithm I presume these to be known (they are actually laser beam parameters, so that is something I have yet to find out). But are these the minimum and respective maximum that I have to plug in the formula I mentioned? You can find more about it on this Wikipedia page: http://en.wikipedia.org/wiki/Normali...age_processing) Are the 'new maximum' and 'new minimum' constants I can fill in in that formula? Or is it a bit more complicated? EDIT: I am working this out in Labview and because it's a function, I guess I have to use a rounding function too? Or is that not neccesary? By the way, I tried using it but alas it fails. In most cases the vertical translation of a Lorentzian, the D in the Lorentzian formula, is zero. This means that when finding the minimum you have to divide by zero, so that part is not working out. 


#7
Apr1614, 09:12 AM

Mentor
P: 21,402

A / ( B+ [ ( (xC)/x_{0} )^n ] + D Since, as you say, the vertical translation turns out to be zero, retrace my steps using this formula: A / ( B+ [ ( (xC)/x_{0} )^n ] 


Register to reply 
Related Discussions  
Normalizing a Wave Function  Advanced Physics Homework  1  
Normalizing a Wave Function  Advanced Physics Homework  1  
Normalizing wave function  Quantum Physics  1  
Normalizing a function  General Math  3  
Normalizing a function  Quantum Physics  4 