Dr. Arne JachensDr. Arne Jachens

PlotData3D.m

Im Rahmen meiner Dissertation hatte ich mehrere Datensätze, bestehend aus fortlaufend nummerierten Datein, aus denen ich Contourplots generieren und diese zu einem Film kompositionieren wollte.

 
pfad = strcat("./")
dataset = strcat("VU")
%dataset = strcat("UU") 
 
%spezifische Anpassung des Plots 
if (dataset=="UU")   
  mytitle=["UU"];
  levels=[-4 -2 0 +2 +4];
  %Farbdeklarationen rot -- blau 
  mycolors(64:-1:33,1:3) =transpose([linspace(1,1,32);linspace(0,1,32);linspace(0,1,32);]); 
  mycolors(1:32,1:3) =transpose([linspace(0,1,32);linspace(0,1,32);linspace(1,1,32);]); 
elseif (dataset=="VU") 
  mytitle=["VU"]; 
  levels=[-8 -6 -4 -2 0];
  %Farbdeklarationen weiss -- blau 
  mycolors(01:32,1:3) =[linspace(0,0,32);linspace(0,0,32);linspace(0.2,1,32);]; 
  mycolors(33:64,1:3) =[linspace(0,1,32);linspace(0,1,32);linspace(1,1,32);];
end %if 
colormap(mycolors);
 
for i = 1:10
  %Einlesen der Daten 
  dateiname = strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".dat")
  [x,y,z]=textread(dateiname,"%f %f %f ");
  %Generierung des Gitters 
  XX  = linspace(min(x),max(x),101);
  YY  = linspace(min(y),max(y),101);
  [GridX,GridY] =  meshgrid(XX,YY);
  %Interpolation der Daten 
  GridZ = griddata(xx,yy,w,GridXX,GridYY,"cubic");
  %Contourplot 
  [c,h]=contourf(GridX,GridY,GridZ,levels);
  set(h,"LineStyle","none");
  set(gca,"FontSize",20);  
  set(0,"DefaultAxesFontSize",14);
  set(0,"DefaultAxesFontWeight","bold");
  colorbar("vert");
  title(mytitle);
  xlabel ("XX")
  ylabel ("YY")
  axis([0,180,0,180]);
  axis equal;
  set(gca,"xtick",[0 30 60 90 120 150 180])
  set(gca,"ytick",[0 30 60 90 120 150 180])
  %Koordinatenkreuz 
  x0=[0.,180.];
  y0=[90.,90.];
  x1=[90.,90.];
  y1=[0.,180.];
  hold on;
  plot(x0,y0,"-k","LineWidth",1);
  plot(x1,y1,"-k","LineWidth",1);
  hold off;
  %Bilder speichern 
  bild1 =strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".png")
  bild2 =strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".eps")
  bild3 =strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".pdf")
  print ("-dpng",bild1)
  set(gcf, "PaperPositionMode", "manual");
  set(gcf, "PaperPosition", [1 5 18.0 18.0]);
  set(gcf, "PaperType", "A4");
  print ("-depsc2", bild2);
  print ("-dpdf", bild3);
end %i 
cross correlation

BallPlot.m

Um richtungsabhängige Informationen darzustellen, kann man eine Kugel mit diesen Daten skalieren und erhält so ein deformiertes Ei.
Die Beispieldatei enthaelt in Spalte 1 und 2 die Winkel von 0 bis 180, Spalte 3 und 4 die zu vergleichenden Datensätze.

 
clear;
pfad = strcat("./")
PI=3.14159;
%field = strcat("Variable1") 
%field = strcat("Variable2") 
field = strcat("Ball")
N=19;
 
%Einlesen der Felder 
dateiname = strcat(sprintf(pfad),"Data_V1_V2.dat")
[Theta,phi,V1,V2]=textread(dateiname,"%f %f %f %f ");
dim=size(Theta)
 
Tspace = linspace(0,180,N);
Fspace = linspace(0,180,N);
[GridT,GridF] =  meshgrid(Tspace,Fspace);
 
 
if (field=="V1")
   GridI=griddata(Theta,phi,V1,GridT,GridF,"cubic");
   mytitle=["Variable1"];
   maxV=max(V1);
elseif (field=="V2")
   GridI=griddata(Theta,phi,V2,GridT,GridF,"cubic");
   mytitle=["Variable2"];
   maxV=max(V2);
end
 
xx=zeros(N,N);
yy=zeros(N,N);
zz=zeros(N,N);
for i=1:N
    for j=1:N
        %Winkelwerte 
        Theta_tmp=(i-1)*180/(N-1);
        phi_tmp=(j-1)*180/(N-1);
        %Umrechnung der Winkel in Richtungsvektoren 
        xx(i,j)=cos(phi_tmp*PI/180);
        yy(i,j)=cos(Theta_tmp*PI/180)*sin(phi_tmp*PI/180);
        zz(i,j)=sin(Theta_tmp*PI/180)*sin(phi_tmp*PI/180);
        if (field=="Ball")
            % theoretischer Referenzwert, Zenit: (0,0,1) 
            xr(i,j)=xx(i,j)*zz(i,j);
            yr(i,j)=yy(i,j)*zz(i,j);
            zr(i,j)=zz(i,j)*zz(i,j);
            mytitle=["homogene Verteilung"];
        else
            %Skalierung mit gemessener Intensitaet 
             x(i,j)=xx(i,j)*GridI(i,j);
             y(i,j)=yy(i,j)*GridI(i,j);
             z(i,j)=zz(i,j)*GridI(i,j);
             mytitle=field;
        end
    end %j 
end %i 
 
%Umrechnung der Winkel in Richtungsvektoren 
scale=1;
for i=1:dim
    xxx(i)=cos(phi(i)*PI/180);
    yyy(i)=cos(Theta(i)*PI/180)*sin(phi(i)*PI/180);
    zzz(i)=sin(Theta(i)*PI/180)*sin(phi(i)*PI/180);
    xxx(i)=xxx(i)*(scale*V2(i));
    yyy(i)=yyy(i)*(scale*V2(i));
    zzz(i)=zzz(i)*(scale*V2(i));
end %i 
 
if (field=="Ball")
    %Kegel 
    h=surf(xr,yr,zr);
    %Halbkugel 
    %h=surf(xx,yy,zz); 
else
    maxV= z(10,10)
    h=surf(x/maxV,y/maxV,z/maxV);
end
 
%Blickrichtung 
az = -45;
el = 30;
view(az, el);
 
set(h,"LineStyle","none");
set(0,"DefaultAxesFontSize",20);
set(0,"DefaultAxesFontWeight","bold");
axis([-1,1, -1,1]);
%caxis([0 1]); 
%colorbar("vert"); 
title(mytitle);
xlabel ("Winkel1")
ylabel ("Winkel2")
%axis tight 
%set(gca,"xtick",[30 60 90 120 150 ]) 
%set(gca,"ytick",[30 60 90 120 150 ]) 
 
%Bildausgabe 
bild1 =strcat("Kegel_",sprintf(field),".jpg")
bild2 =strcat("Kegel_",sprintf(field),".eps")
bild3 =strcat("Kegel_",sprintf(field),".pdf")
print ("-djpeg100",bild1)
set(gcf, "PaperPositionMode", "manual");
set(gcf, "PaperPosition", [0.5 0.5 8.0 8.0]);
print ("-depsc2", bild2);
print ("-dpdf", bild3);
p style="text-align:center;"> football