%
% Auswertungsroutine
% Version: Forum goMatlab.de
%


clear all


%% (1) EINSTELLUNGEN Bootstrapping
% Einstellungen sollen später durch GUI gesetzt werden können. Für
% Programmdurchlauf variable Einstellungen werden hier plaziert.

BootstrpValue = 500;               % Anzahl der imaginären Messwerte (5000)
BootstrpTest = 100;                % Anzahl der Bootstrapzyklen (100)



%% (2) ORDNERSTRUKTUR prüfen und ggf. erstellen
% Alle Dateien liegen im Matlab-Nutzerordner und können nur dort eingelesen
% werden. Dabei ist auf die Bezeichnung und das Format der Dateien zu
% achten. Es wird die Konvertierung Teile_Ebene_PMerkmal benötigt und
% Excel-Dateien (*.xlsx Format) eingelesen.
% Beispiel: Teile_Ebene_HKK.
%
% Projektordner: MATLAB/Datenauswertung
% Import:   MATLAB/Datenauswertung/import
% Export:   MATLAB/Datenauswertung/export
% TecPlot:  MATLAB/Datenauswertung/export/TecPlot
% LaTex:    MATLAB/Datenauswertung/export/LaTex

VerzeichnisProjekt = fullfile(cd,'Datenauswertung');
if ~exist(VerzeichnisProjekt, 'dir')
    mkdir(VerzeichnisProjekt)
end

VerzeichnisImport = fullfile(VerzeichnisProjekt,'import');
if ~exist(VerzeichnisImport, 'dir')
    mkdir(VerzeichnisImport)
end

VerzeichnisExport = fullfile(VerzeichnisProjekt,'export');
if ~exist(VerzeichnisExport, 'dir')
    mkdir(VerzeichnisExport)
end

VerzeichnisTecPlot = fullfile(VerzeichnisExport,'TecPlot');
if ~exist(VerzeichnisTecPlot, 'dir')
    mkdir(VerzeichnisTecPlot)
end

VerzeichnisLatex = fullfile(VerzeichnisExport,'LaTex');
if ~exist(VerzeichnisLatex, 'dir')
    mkdir(VerzeichnisLatex)
end

% Bereitstellen der eben erstellter Pfade für Matlab mittels addpath
addpath(genpath(VerzeichnisProjekt))



%% (3) DATENIMPORT
% Es werden die im Import-Ordner abgelegten Excel-Tabellen (Format *.xlsx)
% eingelesen und anschließend für den Schleifendurchlauf deren Anzahl
% bestimmt.

DocInfo = dir(fullfile(VerzeichnisImport,'*.xlsx'));


for CountDoc = 1:size(DocInfo,1)
    
    % Prüfen der Teile und definieren der Variable "Project"
    if strfind(DocInfo(CountDoc).name,'Neuteil') ~= 0
        Project = 'Neuteile';
    end
    
    if strfind(DocInfo(CountDoc).name,'Teile1') ~= 0
        Project = 'Teile1';
    end
    
    
    if strfind(DocInfo(CountDoc).name,'Teile2') ~= 0
        Project = 'Teile2';
    end
    
    
    % Prüfen der Stufe und definieren der Variablen "StufeName" und "Stufe"
    if strfind(DocInfo(CountDoc).name,'Ebene03') ~= 0
        StufeName = 'Ebene03';
        Stufe = 3;
        StufeID = 1;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene04') ~= 0
        StufeName = 'Ebene04';
        Stufe = 4;
        StufeID = 2;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene05') ~= 0
        StufeName = 'Ebene05';
        Stufe = 5;
        StufeID = 3;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene06') ~= 0
        StufeName = 'Ebene06';
        Stufe = 6;
        StufeID = 4;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene07') ~= 0
        StufeName = 'Ebene07';
        Stufe = 7;
        StufeID = 5;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene08') ~= 0
        StufeName = 'Ebene08';
        Stufe = 8;
        StufeID = 6;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene09') ~= 0
        StufeName = 'Ebene09';
        Stufe = 9;
        StufeID = 7;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene10') ~= 0
        StufeName = 'Ebene10';
        Stufe = 10;
        StufeID = 8;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene11') ~= 0
        StufeName = 'Ebene11';
        Stufe = 11;
        StufeID = 9;
    end


    if strfind(DocInfo(CountDoc).name,'Ebene12') ~= 0
        StufeName = 'Ebene12';
        Stufe = 12;
        StufeID = 10;
    end
    
    
    % Prüfen des Prüfmerkmales und definieren der Variablen "PMerkmal",
    % "PMerkmalAbk", "PMerkmalSym", "PMerkmalEinheit"
    if strfind(DocInfo(CountDoc).name,'VKK') ~= 0
        PMerkmal = 'Radius der Vorderkante';
        PMerkmalAbk = 'rVK';
        PMerkmalSym = 'r_{VK}';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 1;
    end

    if strfind(DocInfo(CountDoc).name,'d vk, S') ~= 0
        PMerkmal = 'Dicke der Vorderkante';
        PMerkmalAbk = 'dVK';
        PMerkmalSym = 'd_{VK}';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 2;
    end
    
    if strfind(DocInfo(CountDoc).name,'d max, S') ~= 0
        PMerkmal = 'Max. Profildicke';
        PMerkmalAbk = 'dMax';
        PMerkmalSym = 'd_{max}';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 3;
    end

    if strfind(DocInfo(CountDoc).name,'HKK') ~= 0
        PMerkmal = 'Radius der Hinterkante';
        PMerkmalAbk = 'rHK';
        PMerkmalSym = 'r_{HK}';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 4;
    end


    if strfind(DocInfo(CountDoc).name,'d hk, S') ~= 0
        PMerkmal = 'Dicke der Hinterkante';
        PMerkmalAbk = 'dHK';
        PMerkmalSym = 'd_{HK}';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 5;
    end

    if strfind(DocInfo(CountDoc).name,'Sehne') ~= 0
        PMerkmal = 'Sehnenlänge';
        PMerkmalAbk = 'l';
        PMerkmalSym = 'l';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 6;
    end

    if strfind(DocInfo(CountDoc).name,'Staffelungswinkel') ~= 0
        PMerkmal = 'Staffelungswinkel';
        PMerkmalAbk = 'lambda';
        PMerkmalSym = '\lambda';
        PMerkmalEinheit = '°';
        PMerkmalID = 7;
    end
    
    if strfind(DocInfo(CountDoc).name,'Schaufel') ~= 0
        PMerkmal = 'Schaufelhöhe';
        PMerkmalAbk = 'h';
        PMerkmalSym = 'h';
        PMerkmalEinheit = 'mm';
        PMerkmalID = 8;
    end
    
    % Auswertung erfolgt vorerst nicht
    %     if strfind(DocInfo(CountDoc).name,'HKP') ~= 0             
    %         PMerkmal = 'Hinterkantenpunkt';
    %         PMerkmalAbk = 'HKP';
    %         PMerkmalSym = 'HKP';
    %         PMerkmalEinheit = 'mm';
    %         PMerkmalID = 9;
    %     end
    % 
    %     if strfind(DocInfo(CountDoc).name,'VKP') ~= 0
    %         PMerkmal = 'Vorderkantenpunkt';
    %         PMerkmalAbk = 'VKP';
    %         PMerkmalSym = 'VKP';
    %         PMerkmalEinheit = 'mm';
    %         PMerkmalID = 10;
    %     end
    

    % Der Tabelleninhalt wird in zwei Matrizen eingelesen. Matrix Num
    % enthält alle numerischen Werte und Bez Arrays (z.B. Bezeichnungen wie
    % Partnummern). Anschließend werden die Matrizen zur Datenaufbereitung
    % transponiert und die überschüssigen Spalten (Element, Min, Max,...)
    % gelöscht.
    
    [~,~, DataImport] = xlsread(fullfile(VerzeichnisImport,DocInfo(CountDoc).name));

    DataImport(:,2) = [];                  % löschen von Property
    DataImport(:,3:11) = [];               % löschen von Mittelwert, Stabw,...
    
    if PMerkmalID ~= 8
        
        DataImport(25:27,:) = [];          % löschen der Ebenen A-C
        DataImport = transpose(DataImport);
        DataTemp = DataImport(3:size(DataImport,1),3:size(DataImport,2));
    
        if strcmp(Project,'Neuteil') ~= 0
            for CountSchnitt = 1:size(DataTemp,2);
                    DataMessNeu(:,1,CountSchnitt,PMerkmalID,StufeID) = DataTemp(:,CountSchnitt);
            end

        elseif strcmp(Project,'Teile1') ~= 0
            for CountSchnitt = 1:size(DataTemp,2);
                    DataMessTeile1(:,1,CountSchnitt,PMerkmalID,StufeID) = DataTemp(:,CountSchnitt);
            end

        elseif strcmp(Project,'Teile2') ~= 0
            for CountSchnitt = 1:size(DataTemp,2);
                    DataMessTeile2(:,1,CountSchnitt,PMerkmalID,StufeID) = DataTemp(:,CountSchnitt);
            end

        else
            fprintf('WARNUNG:\r\n');
            fprintf('Kontierung im Quellcode ergänzen, Auswertung unvollständig!\r\n');
            fprintf('\r\n');
        end
        
        
    elseif PMerkmalID == 8
        DataImport(4,:) = [];               % löschen doppelter Messwerte
        DataImport(:,2) = [];               % löschen Spalte Schnitt (nicht erforderlich)
        
        DataImport = transpose(DataImport);
        DataTemp = DataImport(3:size(DataImport,1),3:size(DataImport,2));
        
        if strcmp(Project,'Neuteil') ~= 0
            DataHoeheNeu(:,1,StufeID) = DataTemp(:,1);

        elseif strcmp(Project,'Teile1') ~= 0
            DataHoeheTeile1(:,1,StufeID) = DataTemp(:,1);

        elseif strcmp(Project,'Teile2') ~= 0
            DataHoeheTeile2(:,1,StufeID) = DataTemp(:,1);

        else
            fprintf('WARNUNG:\r\n');
            fprintf('Kontierung im Quellcode ergänzen, Auswertung unvollständig!\r\n');
            fprintf('\r\n');
        end
        
        
    else
        fprintf('WARNUNG:\r\n');
        fprintf('Merkmal nicht implimentiert, Auswertung unvollständig!\r\n');
        fprintf('\r\n');
        
    end
end

% clearvars CountDoc CountSchnitt DataImport DataTemp DocInfo



%% BERECHNUNG STATISTISCHER KENNGRÖßEN
% Zur Darstellung des Prüfmerkmals über die Kanalhöhe und zur späteren
% Auswertung.


% MinAbs = min(Messwerte,[],1);
% MaxAbs = max(Messwerte,[],1);
% MittelAbs = mean(Messwerte);
% MedianAbs = median(Messwerte);
% ModusAbs = mode(Messwerte);
% StabwAbs = std(Messwerte);
% VarianzAbs = var(Messwerte);
% 
% 
% Soll = ones(size(Schnitt));
% 
% MinRel = min(Messwerte,[],1) ./ Soll;
% MaxRel = max(Messwerte,[],1) ./ Soll;
% MittelRel = MittelAbs ./ Soll;
% StabwRel = std(Messwerte) ./ Soll;
% MedianRel = median(Messwerte) ./ Soll;
% ModusRel = mode(Messwerte) ./ Soll;
% VarianzRel = var(Messwerte) ./ Soll;
% 
% 
% 
% % Datenausgabe für Latex
% LatexFile = fopen(strcat(LatexExportFolder,'/',Kontierung,'_',Stufe,'_',PMerkmalDia,'_',BootstrpIteration,'.tex'),'w');
% 
% fprintf(LatexFile,'\\begin{table}\r\n');
% fprintf(LatexFile,strcat('\\caption{\\Delta $',Abk,'$ über $h/H$}\r\n'));
% fprintf(LatexFile,strcat('\\label{tab:DiskrStatistik_',Kontierung,'_',Stufe,'_',PMerkmalDia,'}\r\n'));
% fprintf(LatexFile,'\\centering\r\n');
% fprintf(LatexFile,'\\begin{tabular}{cccccc}\r\n');
% fprintf(LatexFile,'\\toprule\r\n');
% 
% fprintf(LatexFile,'Schnitt [-] & MinRel [%%] & MaxRel [%%] & Soll [%%] & MittelRel [%%] & StabwRel [%%] \\\\\r\n');
% fprintf(LatexFile,'\\midrule \r\n');
% 
% for j=1:size(ExportData,1)
%     fprintf(LatexFile, '%8.2f & %8.4f & %8.4f & %8.4f & %8.4f & %8.4f \\\\\r\n', ExportData(j,:));
% end
% 
% fprintf(LatexFile,'\\bottomrule \r\n');
% 
% fprintf(LatexFile,'\\end{tabular} \r\n');
% fprintf(LatexFile,'\\end{table} \r\n');	
% 
% fclose(LatexFile);


