Select to expand quote
decrepit said..
For me this proves once and for all that the sawtooth in 10hz waveforms represent vertical speeds, not noise or artefacts.
That's one possible explanation, but not the only one, and not necessarily the correct one. Keep in mind that (a) the speed field we are using (gSpeed) is described in the u-blox documentation as "Ground Speed (2-D)", not as 3D speed. Ground speed should not include any vertical movements; if it does, that's pretty much an artifact by definition.
Another possible explanation is that the firmware uses different filtering for the different modes, and that the sea mode filter smoothes data more than the portable mode. Here is an example of a track smoothed using 5-point averages (blue: original, red: filtered):

The filter in the firmware would probably something a bit more sophisticated than an average filter, maybe a Kalman filter variation; but the effect would be similar.
Select to expand quote
decrepit said..
There doesn't seem to be any great advantage in using either mode, as the sawtooths average out.
That is certainly true if you look at larger ranges, like nautis. But for "top speed" categories, there will be a noticeable difference. That is obvious for "top speed" from single points; in your graphs, the spiky portable model gives a single-point top speed that is about 1.5 knots higher than the sea model.
For 2 seconds, the effect will be reduced, but not completely eliminated: the found top 2 second range is likely to include spikes at the left and right side, so it will overstate the speed. Here's a little example with some artificial data that look similar to your graph:

The "true speed" here is 0. It's overlayed with a regular up and down of +/- 1 knot, and some random noise of up to +/- 0.5 knots. The region shown would be about 3 seconds of 10 Hz data. The single-point speed is 1.49 knots too high for the unfiltered data, and 0.36 knots too high for the smoothed data. Over 2 seconds, the error goes down to 0.19 and 0.13 knots, respectively.
Note that:
(a) the speed is overstated, which is a result of looking for the maximum in noisy data.
(b) the error for the unfiltered data is about 50% higher than the error for the filtered data.