2-D color plot
The normal matlab function pcolor didn't do what I wanted it to, e.g. it ignored final columns and rows. This version is what I expected the function to be: an n x m matrix is plotted as n x m squares, each square representing the data value at position (n, m).
function p = tg_pcolor(varargin)
% function tg_pcolor(Matrix)
% function tg_pcolor(Matrix, rowsValues, ColValues)
% function tg_pcolor(Matrix, rowsValues, ColValues, shading)
%
% Improved pcolor function: an n x m matrix gives n * m squares.
mat = varargin{1};
[r, c] = size(mat);
if length(varargin) > 1,
x = varargin{2}(:)';
y = varargin{3}(:)';
else,
x = 1:c;
y = 1:r;
end;
x = [2 * x(1) - x(2) x];
y = [2 * y(1) - y(2) y];
if length(varargin) > 3,
command = varargin{4};
if strcmp(command, 'log') == 1,
y = log(y);
end;
end;
mat0 = [mat zeros(r, 1); zeros(1, c + 1)];
p = pcolor(x, y, mat0);
if length(varargin) > 3,
shading(varargin{4});
else,
shading('flat');
end;
xticklab = num2cell(x(2:end));
dx = diff(x) ./ 2;
tickx = x(1:(end - 1)) + dx;
set(gca, 'XTick', tickx);
set(gca, 'XTickLabel', xticklab);
yticklab = num2cell(y(2:end));
dy = diff(y) ./ 2;
ticky = y(1:(end - 1)) + dy;
set(gca, 'YTick', ticky);
set(gca, 'YTickLabel', yticklab);