Hi Vanessa,
I will assume that the psf is a function of intensity and not amplitude; otherwise you would have to square the psf in order to get intensity. In the posted picture the horizontal axis is in minutes, implying something is changing with time, but let's assume that the intensity is uniform in time. This means using energy/sec rather than energy but does not really change the cdf calculation, which is a spacial calculation.
Energy/sec passing through the surface is intensity times times area. The psf is axially symmetric, so for an increment dr, the area da is simply the annulus 2*pi*r*dr. The dr part is associated with the array spacing in the psf array and the 2*pi will get taken care of by normalization. That leaves r, so to create the pdf you need to multiply the psf by r. Since the array has an even number of points it seems like the center could be either 128 or 129 (or 128.5). But let's assume 128 as you did.
It's the pdf that gets normalized to 1, not the cdf.
The following code uses the same data from the psf as you did.
horizontalProfile = psf(128, :);
HP = horizontalProfile(128:end);
r = 0:length(HP)-1;
HPpdf = HP.*r;
HPpdf = HPpdf/sum(HPpdf);
cdf = cumsum(HPpdf);
plot(r,cdf)
Here the dr spacing was taken as 1, so you might have to rescale the r axis if you know how the psf was sampled.