non_uniform_FFT= DFTmtx* k2F;
The first line above overwrites the previous because you didn't refer to a plane with a 3D indexing expression -- hence the LHS variable is simply a 2D array.
Preallocate the output array at the beginning, before the loop begins (and, btw, you can and should remove the size() call from the loop; a 3D array cannot change its spots...er, sizes...between planes so they will be the same every iteration.
Also, you're redefining n the loop variable inside the loop over n, DON'T DO THAT! I changed the loop index to indx
Finally, you can just clear j to ensure j is the builtin complex variable to be sure it hasn't been overwritten elsewhere
[no_a_scan_pixels,no_a_scans] = size(noisy_C_scan(:,:,1));
[no_a_scan_pixels,no_a_scans] = size(noisy_C_scan(:,:,n));
k2F = noisy_C_scan(:,:,n).*repmat(HPFwin,1,no_a_scans);
n=0 : 1 :N-1;
k=calib_interpolation( 100000 );
k= (k-kmin)./ (delta_k);
non_uniform_FFT(:,:,indx)= DFTmtx* k2F;
There undoubtedly is quite a lot more that could be done to streamline, but that should get you started, anyways...