%% Generieren von Beispieldaten
% Die Messwerte aus der Matrix Testdaten sollen in einem Box-Plot
% dargestellt werden. In diesem Beispiel gibt es 3 Messreihen mit jeweils
% unterschiedlich vielen Messwerten. Die Messwerte werden dabei auf die
% Nennmaße der jeweiligen Messreihen bezogen, um mittels Box-Plot die
% prozentuale Abweichung vom Nennmaß zu zeigen.
Testwerte = [0.3102 0.3560 0.3140;...
             0.3780 0.3140 0.3920;...
             0.2650 0.3250 0.3900;...
             0.3500 0.3690 0.3360;...
             0.3410 0.2910 0.3230;...
             0.2950 0.3100 0.3330;...
             0.3340 0.3020 0.3230;...
             0.2960 0.3630 0.3320;...
             0.4150 0.3140 0.3950;...
             0.2870 0      0.3820;...
             0.2830 0      0.2905;...
             0.2530 0      0;...
             0.3040 0      0];
Nennmasse = [0.36 0.32 0.40];



%% Erstellen des Box-Plots
% Für jede Zeile der Messdaten (Matrix Testdaten) wird ein Box-Plot
% erstellt.
for CountMessreihe = 1:size(Testwerte,2)
    
    % Prozentuale Abweichung = Testwert / Nennmaß * 100
    TestwerteRel(:,CountMessreihe) = Testwerte(:,CountMessreihe) ./ Nennmasse(1,CountMessreihe) * 100;
    
    % Suchen der ersten Zeile mit Wert 0
    for CountValue = 1:size(TestwerteRel,1)
       Zellwert = TestwerteRel(CountValue,CountMessreihe);
       
       if Zellwert == 0
           break
       end
    end
    
    % Fall 1: Gemischte Spalte
    % Spalte enthält Messwerte und ist mit leeren Feldern (Nullen)
    % aufgefüllt
    if CountValue < size(TestwerteRel,1) && CountValue ~= 1
        LetzteZeile = CountValue -1;
        
    % Fall 2: Leere Spalte
    % Spalte enthält nur Nullen
    elseif CountValue == 1
        fprintf('Fehler: Spalte enthält nur Nullen.\r\n');
        break;
        
    % Fall 3: Spalte enthält nur Messwerte
    % Nullen sind in der Spalte nicht vorhanden
    else
        LetzteZeile = size(TestwerteRel,1);
    end
    
    % Berechnung nur zur Datenkontrolle
    Median = nanmedian(TestwerteRel(1:LetzteZeile,CountMessreihe))
    Min = nanmin(TestwerteRel(1:LetzteZeile,CountMessreihe))
    Max = nanmax(TestwerteRel(1:LetzteZeile,CountMessreihe))
    Quantil25 = quantile(TestwerteRel(1:LetzteZeile,CountMessreihe),0.25)
    Quantil75 = quantile(TestwerteRel(1:LetzteZeile,CountMessreihe),0.75)
    
    boxplot(TestwerteRel(1:LetzteZeile,CountMessreihe))
    hold on    
end

% Achseneinstellungen
title('Beispiel Box-Plot für goMatlab.de');
set(gca,'XTick',1:10)
set(gca,'XTickLabel',{'3','4','5','6','7','8','9','10','11','12'})
xlabel('Stufe');
ylabel(strcat('\Delta Messwerte in [%]'));
    
    



