function mdimplot( varargin ) x=varargin{1}; y=varargin{2}; D=varargin{3}; xcells = rows(unique(sort(x))); ycells = rows(unique(sort(y))); xbase = min(min(x)); ybase = min(min(y)); dx = (max(x) - min(x)) / xcells; dy = (max(y) - min(y)) / ycells; minD = min(D); maxD = max(D); % scale each dimension into 0-1 D -= (ones(rows(D),1) * min( D )); D = D ./ (ones(rows(D),1) * max( D )); dims = columns(D); w = dx / (dims+1); clf z=0; for dd=1:dims d = D(:,dd); i = 1; for xc = 1:xcells for yc = 1:ycells; x0 = xbase + xc * dx + w * dd; y0 = ybase + yc * dy; h = dy * d(i++); patch( [ x0 x0+w x0+w x0 ], [ y0 y0 y0+h y0+h ], dd ); end end x0 = xbase + (xcells) * dx; y0 = ybase + (ycells+1) * dy + 2 * w * dd; patch( [ x0 x0+w x0+w x0 ], [ y0 y0 y0+w y0+w ], dd ); if (nargin >= 3 + dd) legend = varargin{3+dd}; else legend = ""; end text( x0 + 3 * w , y0, sprintf( "%s [ %.02f - %.02f ]", legend , minD(dd), maxD(dd) ) ); end endfunction