scale_for_display

PURPOSE ^

[elem_data,ref_lev,max_scale] = scale_for_display( elem_data, ref_lev, clim )

SYNOPSIS ^

function [elem_data,ref_lev,max_scale] = scale_for_display( elem_data, ref_lev, clim )

DESCRIPTION ^

 [elem_data,ref_lev,max_scale] = scale_for_display( elem_data, ref_lev, clim )

 PARAMETERS: elem_data
  elem_data: data for fem elements or image pixels

 PARAMETERS: ref_lev
  ref_lev:   if param provided, use it,
               otherwise use the global value
             Can be numeric or 'auto' or 'use_global' 

 PARAMETERS: clim
    clim - colour limit. Colours more different from ref_level are cropped.
         - if not specified or scale==[] => no limit

 OUTPUT: 
    ref_lev, max_scale - the centre and max of the colour scale
    elem_data - data scaled in the range [-1 .. 1]

 $Id: scale_for_display.html 2819 2011-09-07 16:43:11Z aadler $
 (C) 2006 Andy Adler. Licensed under GPL v2

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [elem_data,ref_lev,max_scale] = scale_for_display( elem_data, ref_lev, clim )
0002 % [elem_data,ref_lev,max_scale] = scale_for_display( elem_data, ref_lev, clim )
0003 %
0004 % PARAMETERS: elem_data
0005 %  elem_data: data for fem elements or image pixels
0006 %
0007 % PARAMETERS: ref_lev
0008 %  ref_lev:   if param provided, use it,
0009 %               otherwise use the global value
0010 %             Can be numeric or 'auto' or 'use_global'
0011 %
0012 % PARAMETERS: clim
0013 %    clim - colour limit. Colours more different from ref_level are cropped.
0014 %         - if not specified or scale==[] => no limit
0015 %
0016 % OUTPUT:
0017 %    ref_lev, max_scale - the centre and max of the colour scale
0018 %    elem_data - data scaled in the range [-1 .. 1]
0019 %
0020 % $Id: scale_for_display.html 2819 2011-09-07 16:43:11Z aadler $
0021 % (C) 2006 Andy Adler. Licensed under GPL v2
0022 
0023    global eidors_colours;
0024    % need crazy if statement to support matlab >= 6.0
0025    if nargin <=1
0026       ref_lev = eidors_colours.ref_level;
0027    elseif strcmp(ref_lev, 'use_global' );
0028       ref_lev = eidors_colours.ref_level;
0029    end
0030 
0031    if nargin<=2
0032       clim= [];
0033    end
0034 
0035    if ~isnumeric(ref_lev)
0036       if ~strcmp(ref_lev, 'auto')
0037           error('ref_level parameter must be "auto" or numeric');
0038       end
0039       s_ed= elem_data(:);
0040       s_ed(isnan(s_ed)) = [];
0041       s_ed= sort(s_ed);
0042       e= length(s_ed);
0043       if e==0;
0044          error('Can''t display. All values NaN. Is raw data 0?')
0045       end
0046       ref_lev = mean(s_ed( ceil(.26*e):floor(.74*e) ));
0047    end
0048 
0049    elem_data = elem_data - ref_lev;
0050 
0051    % Crop output to the colour limit
0052    if isempty(clim)
0053       max_scale = max(abs(elem_data(:))) + eps;
0054    else
0055       elem_data( elem_data> clim)=  clim;
0056       elem_data( elem_data<-clim)= -clim;
0057       max_scale = clim;
0058    end
0059 
0060    elem_data = elem_data/max_scale;

Generated on Tue 09-Aug-2011 11:38:31 by m2html © 2005