Matlab documentation states that when stretch-to-fill is enabled (as it is by default), then "the axes might not exactly match the data aspect ratio, plot box aspect ratio, and camera-view angle values stored in its DataAspectRatio, PlotBoxAspectRatio, and CameraViewAngle properties." Setting the 'mode' of any one of these three properties to 'manual' should turn off stretch-to-fill. My issue is that I want an accurate reading of the DataAspectRatio without setting any of these to manual. A workaround seems to be temporarily setting PlotBoxAspectRatioMode to 'manual,' which has the effect of changing the value of DataAspectRatio to match what is on screen .
val = daspect
Or a safer way to do it if you want a generally useful script (e.g. in case PlotBoxAspectRatioMode is already manual and you don't want to change that) would be:
pbaspectMode = get(gca,'PlotBoxAspectRatioMode');
val = daspect;
My question is - is this safe? Or will there be side effects, either occurring intermittently, or that are hard to detect?
 This is in contrast to as setting DataAspectRatioMode to 'manual,' which changes what's on screen to match the current value of DataAspectRatio. This is not what I want.