Speed measurement when stationary on the surface is also subject to noise due to the Uboat slightly rocking on the waves. The stabilization of the periscope translates it into lateral motion that can easily mess up a speed read. For best results, do it while submerged at periscope depth.
For faster targets, there's another hurdle which is that it passes through the vertical post too quickly and the resulting speed calculation becomes noisy due to failure to record fractional seconds. To mitigate this, it's better to measure the speed while running parallel to the target at a known moderate speed (e.g. Half, which is normally 12.412.5 kts). If you measure the target speed as though it was stationary and then subtract your own speed from the result, you'll get a moderately reliable speed read on a fast target. I refer to this as the "differential" speed read.
If all else fails, you can play with the engine telegraph on a parallel course until you match the target speed to the dot. It takes longer to do well, but it works.
Lastly, Efshapo is right about hull width being a factor when measuring at angles that sufficiently deviate from the 90. In such circumstances, it's easy to underestimate the speed by a lot, up to approximately 2 kts at extreme angles.
