So, I compared my plot (using fill3) to the similar plot with surf with the get() function and noticed that my cdata is empty and my zdata is only retained for the most recent data points.
I then used the set() command to dummy in a fake cdata array and now I get the colorbar and with the correct limits. dmy=linspace(min(b(:,18)),max(b(:,18)),numel(b(:,18)));
This seems to work, if there are any problems with this approach please say why. Otherwise the thread can be closed.