Thanks for the additional information,. I think there's a problem in how you define the projection location. The monitor is z normal, and the projection is done at z=112nm, unless the monitor is far from this position (at least 1 wavelength away). the far field calculation might not have much sense. Additionally, you calculate theta from x and y, it should be from x and z.
In any case, it might be simpler to start from theta, we can calculate the field at a distance of 1m, x,y and z are obtained from theta and we use farfieldexact to get the far field vs x(theta), 0, z(theta). It could be something like:
theta = linspace(-90, 90, 181);
thetarad = theta * pi/180;
x = sin(thetarad) ;
z = cos(thetarad);
E = farfieldexact(m, x, y, z, 1:nf, 1.5);
E2 = sum(abs(E)^2, 2);
image(theta, lambda*1e6, E2/max(E2), "angle", "lambda (um)");
I hope this will help!