SombreroGUI

 

Die SombreroGUI ist hier mit zwei Pushbuttons und dem axes-Element gelöst. Das Sombrero-Skript wurde soweit modifiziert, dass es eine Funktion "sombrerofct" mit Übergabevariable wurde. Der Inhalt der Übergabevariable wird mit einer switch-case Funktion überprüft, dann wird entsprechend in das axes-Element aus der GUI geplottet.

 

 

Skript
function sombreroGUI

global axeshandle

figureHandle = figure('name','AYAYAYAY!',...
'position',[(1024/2)-125 (768/2)-125 600 400],...
'numbertitle','off','MenuBar','none');

mysize=get(figureHandle, 'position');
%Die Größe bzw. Postionsreihung wird in eine Variable geschrieben,
%um sie bei den Positionierungen der Buttons nutzen zu können


contourButton=uicontrol('style','pushbutton','string','Contour',...
'position',[mysize(3)-110 mysize(4)/2 100 50],...
'callback','sombrerofct(''contour'')');
surfButton=uicontrol('style','pushbutton','string','Surface',...
'position',[mysize(3)-110 mysize(4)/2-50 100 50],...
'callback','sombrerofct(''surf'')');

axeshandle=axes('units','pixel','position',[50 50 434.0000 342.3000]);
%Die Größe ist aus einem automatisch erstelltem axes-Element abgelesen.
%Das geht am besten aus dem Handle, nachdem die 'units' auf 'pixel'
%umgestellt wurden. Das Handle kann man mit gca (get current axes)
%bekommen.

end
Das modifizerte Sombrero-Skript:
Skript
function sombrerofct(type)

global axeshandle

x = linspace(-8,8);
y = linspace(-8,8);
[X,Y] = meshgrid(x,y); %Erzeugt ein Gitternetz
Z = sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2); %Eigentliche Gleichung

switch type
  case 'surf'
    surf(axeshandle, X, Y, Z ); %Verbindet die Punkte
    xlabel('x'); %Optional, Achensbeschriftung
    ylabel('y') ;
    zlabel('z');
  case 'contour'
    contour(axeshandle, X, Y, Z );
    xlabel('x');
    ylabel('y');
end
end