Binning problem when using datenum with pcolor
Ältere Kommentare anzeigen
Hello everyone.
When I plot data using pcolor using ("contemporary") datenum values for the x-axis, pcolor bins the data into one or a few bins together, instead of using the ones given.
An example code which reproduces this problem:
secinday = 24*3600;
t0vec = [2015 05 01 0 0 0];
t0 = datenum(t0vec);
% Create an interval of an hour of timesteps of a second
t = t0 + (0:(1/secinday):(1/24-1/secinday));
y = 1:10; % Just some y-axis values
z = rand(10,3600); % Random z-values
pcolor(t,y,z);
surf has the same problem. Anyone know why this happens and how I can prevent it? Or how I can work around it?
It is funny that the problem disappears when one makes the y-axis logarithmic:
set(gca,'yscale','log');
shading flat; % Otherwise only gridlines visible
But as soon as you make them linear again, the problem reappears.
Note that it only happens for high datenum values. When one takes for example
t0 = [1 05 01 0 0 0];
there is no problem. So my guess is that it has something to do with the small relative difference between a "contemporary" datenum value and the value a second later. So the workaround I currently use is to do t-floor(t0);
3 Kommentare
Lukas
am 19 Mai 2015
Chad Greene
am 19 Mai 2015
Interesting. I get the same problem on 2012b. Oddly enough,
t = (1:3600) + floor(now);
works, but
t = datenum(2015,5,1,0,0,1:3600);
does not.
Lukas
am 19 Mai 2015
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Time Series Objects finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!