SombreroGUI

 

Die SombreroGUI ist hier mit zwei Pushbuttons und dem axes-Element gelöst. Das Sombrero Skript wurde soweit modifiziert, dass eine Funktion mit Übergabevariable wurde, "sombrerofct". 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');

size=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',[size(3)-110 size(4)/2 100 50],...
'callback','sombrerofct(''contour'')');
surfButton=uicontrol('style','pushbutton','string','Surface',...

'position',[size(3)-110 size(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);
[xx,yy] = meshgrid(x,y); %Erzeugt ein Gitternetz
zz=sin(sqrt(xx.^2+yy.^2))./sqrt(xx.^2+yy.^2); %Eigentliche Gleichung

switch type
case 'surf'
surf(axeshandle, xx, yy, zz ); %Verbindet die Punkte
xlabel('x'); %Optional, Achensbeschriftung
ylabel('y') ;
zlabel('z');

case 'contour'
contour(axeshandle, xx, yy, zz );
xlabel('x');
ylabel('y');
end
end