function isokorrel(KPM, korrel, Datumk, Transparenz, Farbe, PatchRed, Periodenniveau, ug, Schrift)
% erstellt ein Iso-Oberflächen-Diagramm mit Isocaps für Volumendaten
% zeitparametervariabler Korrelations- oder Volatilitätsberechnungen sowie
% eine Ebene, die über alle Perioden das Niveau einer
% Vergleichsperiodizität zeigt
% © norman.schelwies@dekabank.de
% KPM               Volumendaten J x J x P parametervariabler Berechnungen
%                   der Korrelation oder Volatilität, Matrix wird durch
%                   KorrPeriM oder VolPeriM erzeugt
% korrel            Korrelationsniveau der Iso-Oberfläche 
% Datumk            Datumsvektor zur Achsbeschriftung, wird ebenfalls durch 
%                   KorrPeriM oder VolPeriM erzeugt
% Transparenz       Alpha-Wert der Oberfläche der Vergleichsperiodizität
% Farbe             Farbvektor der Darstellung
% PatchRed          Schrupf-Faktor der Patch-Daten; je kleiner dieser Wert,
%                   je schneller die Berechnung und je grober die Oberfläche
% Periodenniveau    Niveau der Periodizität, bei dem eine transparente
%                   Oberfläche eingeblendet werden soll
% ug                Untergrenze der Korrelation zur Beschränkung der
%                   Farbwerte-Erhöhung des Kontrasts
% Schrift           Schriftgröße, die im Diagramm verwendet werden soll
% Beispiel:         isokorrel(KPM, 0, Datumk, .3, jet, .05, 60, -1, 12)
% 
 
% Obergrenze der Farbskala
og=.3;
% Die Ebene mit den gewünschten Eigenschaften erzeugen
L=length(Datumk);
P=ones(L,L)*Periodenniveau;
C=ones(L,L)*.2;
z=surf(P);
set(z,'CData',C,'XData',Datumk,'YData',Datumk, 'FaceAlpha', Transparenz,'EdgeColor', [ 0.853 0.853 0.853])
 [SX, SY, SZ]=size(KPM);
% Funktionsaufruf, der ein X-Y-Z-Raster analog einem meshgrid aufbaut
% Die Funktion Wertegitter ist ebenfalls enthalten
[BX, BY, BZ]=Wertegitter(Datumk,1:SZ);
% Farbwerte der Iso-Oberfläche bestimmen
fl=round(length(Farbe)*(korrel-ug)/(og-ug))+1;
% Iso-Oberfläche bestimmen
[f,v]=isosurface(BX,BY,BZ,KPM,korrel);
% Iso-Oberfläche zeichnen
p=patch('faces', f, 'vertices', v);
set(p,'FaceColor',Farbe(fl,:),'EdgeColor','none');
% Datenmenge rduzieren
reducepatch(p,PatchRed)
% Glätten der Oberflächen
isonormals(BX,BY,BZ,KPM,p)
% Isocaps erzeugen und einzeichnen
ic = isocaps(BX,BY,BZ,KPM,korrel);
p1=patch(ic);
set (p1, 'FaceColor','interp','EdgeColor','none');
colormap(Farbe)
% Renderer festlegen
lighting phong
%Achsen einrichten
axis equal
datetick('x',10)% format der Beschriftung
datetick('y',10)
% Verhältnis für die Verwendung von Zeitwerten auf der x- und y-Achse anpassen
daspect([1000 1000 20]);
axis tight
set(gcf,'color','white')% Hintergrund des Bildes
set(gca,'color',[ 0.9 0.9 0.9 ],'YAxisLocation','right','FontName','Arial','XColor', ...
    [ 0.253 0.253 0.253 ],'YColor', [ 0.253 0.253 0.253 ],'ZColor', [ 0.253 0.253 0.253 ],'FontSize',[Schrift],...
    'CLim', [ug og], 'CameraPosition',[756523 638574 1083.25],'CameraTarget', [726277 726277 100.5], 'ZLim',[0 SZ])
% Lichteinstellungen
%camlight headlight
camlight right
