Code covered by the BSD License  

Highlights from
Data Browser

image thumbnail
from Data Browser by Phil Larimer
A utility to browse data files that involve one or more channels of data over time.

normalizeMatrix(inMatrix, dim)
function [outMatrix coefficients] = normalizeMatrix(inMatrix, dim)
% normalize a matrix along a given dimension
% dim = 0 does a global normalization
% outMatrix = normalizeMatrix(inMatrix, dim);
% defaults:
%   dim = 2

if nargin < 2
    dim = 2;
end

matSize = size(inMatrix);

if dim == 0
    % global normalization
    dataMin = min(inMatrix);
    dataMax = max(inMatrix);
    for i = 2:numel(matSize)
        dataMin = min(dataMin);
        dataMax = max(dataMax);
    end
    if dataMax > dataMin
        outMatrix = (inMatrix - repmat(dataMin, matSize)) ./ (repmat(dataMax - dataMin, matSize));
    else
        outMatrix = 0.5 * ones(size(inMatrix));
    end
    coefficients = [dataMin dataMax - dataMin];
else
    switch dim
        case 1
        	outMatrix = (inMatrix - repmat(min(inMatrix, [], 2), 1, size(inMatrix, 2))) ./ repmat(range(inMatrix, 2), 1, size(inMatrix, 2));
            coefficients = [min(inMatrix, [], 2); range(inMatrix, 2)]';
        case 2
        	outMatrix = (inMatrix - repmat(min(inMatrix, [], 1), size(inMatrix, 1), 1)) ./ repmat(range(inMatrix, 1), size(inMatrix, 1), 1);
            coefficients = [min(inMatrix, [], 1); range(inMatrix, 1)]';
        otherwise
            newSize = ones(size(matSize));
            newSize(dim) = matSize(dim);
            outMatrix = (inMatrix - repmat(min(inMatrix, [], dim), newSize)) ./ repmat(max(inMatrix, [], dim) - min(inMatrix, [], dim), newSize);                
            coefficients = [min(inMatrix, [], dim); range(inMatrix, dim)]';
    end
end

outMatrix(isnan(outMatrix)) = .5;

function outData = range(inData, dim)
    outData = max(inData, [], dim) - min(inData, [], dim);

Contact us at files@mathworks.com