% Preprocessing für den Partitionsschätzer. Hier werden die Daten
% dimensionsweise auf das Intervall [0,1] gelegt. Nur die Extrema an beiden
% Rändern (in 1/100) werden aus dem Intervall gefiltert.

function [X X_eval] = preproc( X, X_eval,quantiles)
    
    % Quantile (Zum Abfangen extremer Werte werden in jeder Dimension die
    % Werte, die unterhalb bzw oberhalb des ersten bzw zweiten Quantils
    % liegen in eine Partition 'sonstiges' gepackt
    
    borders = quantile (X, quantiles);
    
    borders(2,((borders(2,:) - borders(1,:) == 0))) = 1;
    
    % Daten verschieben (unteres Quantil: 0) und anpassen (oberes
    % Quantil: 1; für Training und Evaluation)
    for i_loop=1:size(X,1)
        X(i_loop,:)=(X(i_loop,:)-borders(1,:))*diag(1./(borders(2,:)-borders(1,:)));
    end
    
    
    
% ACHTUNG!! WIRD BEI KONSTANTE ABBRECHEN MIT DIV BY ZERO!!!
    for i_loop=1:size(X_eval,1)
        X_eval(i_loop,:)=(X_eval(i_loop,:)-borders(1,:))*diag(1./(borders(2,:)-borders(1,:)));
    end
 
end

