# What is the CDF for the following PDF of a cut-off log-normal distribution (in Matlab)?

The radii r is drawn from a cut-off log-normal distribution, which has a following probability density function:

pdf=((sqrt(2).*exp(-0.5*((log(r/rch)).^2)))./((sqrt(pi.*(sigma_nd.^2)).*r).*(erf((log(rmax/rch))./sqrt(2.*(sigma_nd.^2)))-erf((log(rmin/rch))./sqrt(2.*(sigma_nd.^2))))));


rch, sigma_nd, rmax, and rmin are all constants.

It is also shown in the following snapshot:

-

In general, if you cutoff a pdf at $r_{min}$ and $r_{max}$ the pdf stays the same, except that you need to normalize it back to one. This means that you have to divide by the probability mass in that interval, which is the cdf at $r_{max}$ minus the cdf at $r_{min}$. I don't have Matlab here at the moment, but in octave the command is
lognormal_pdf(r)./(lognormal_cdf(rmax) - lognormal_cdf(rmin))

Since the denominator does not depend on $r$, the cdf is
lognormal_cdf(r)./(lognormal_cdf(rmax) - lognormal_cdf(rmin))

I am not sure what your goal is here. If you want to sample from the truncated distribution, then you can sample from the untruncated one and throw away everything that is not inside the truncation borders. However, that might take very long until you have enough samples. The other option is to use the inverse cdf of the lognormal distribution (actually works for every distribution). I am not sure whether it is available in matlab. Say $a=cdf(r_{min})$ and $b = cdf(r_{max})$, then sample $u\sim U[0,1]$ and use $icdf((u-a)/(b-a))$. That gives you samples from the truncated distribution. – fabee Dec 18 '11 at 21:22