function [distmatx joined_db] = getDistMatrix(db, rows, col_size, props)

% getDistMatrix - Create a matrix of total errors from the ranked DB.
%
% Usage:
% distmatx = getDistMatrix(db, rows, col_size, props)
%
% Description:
%   The col_size parameter is used to find the number of rows that make up the 
% x-dimension of the matrix.
%
%   Parameters:
%	db: A tests_db object.
%	rows: Indices of rows in db after joining (and sorting).
%	col_size: Number of rows to take from DB to form the columns of matrix plot.
%	props: A structure with any optional properties.
%	  sortBy: If specified, db is sorted after being joined with original using this column.
%		
%   Returns:
%	a_plot: A plot_abstract object.
%
% See also: tests_db, plot_abstract
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2005/12/12

% Copyright (c) 2007 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.

if ~ exist('props', 'var')
  props = struct;
end

% Join with original here. Only joins the requested rows.
joined_db = joinOriginal(db);

if isfield(props, 'sortBy')
  joined_db = sortrows(joined_db, props.sortBy);
end

joined_db = joined_db(rows, :);

%displayRows(joined_db(1:10, 'Distance'))

num_rows = dbsize(joined_db, 1);

% Get matrix of desired rows and columns
num_plot_rows = (num_rows / col_size);
distmatx = reshape(joined_db(:, 'Distance').data, col_size, num_plot_rows)';