Schreiben Sie eine Funktion keypad(keys,keysize), die ein Tastenfeld mit einer beliebig wählbaren Anzahl von Tasten erzeugt. Die Anordnung und Beschriftung der Tasten wird über den Parameter keys (NxM Cell-Array of Strings) angegeben, wobei N der Anzahl der Tasten in vertikaler Richtung und M der Anzahl der Tasten in horizontaler Richtung entspricht. Der zugehörige String definiert die Beschriftung der Taste. Der optionale Parameter keysize (2×1 Vektor = [Breite, Höhe]) erlaubt es, die Größe der Tasten in Zentimetern festzulegen. Geben Sie als Defaulteinstellung eine Tastengröße von 1cm x 1cm vor. Bei jedem Mausklick auf eine der Tasten wird der zugehörige String im Kommandofenster ausgegeben.
Ein Beispiel:
>> keys={’1′,’2′,’3′;’4′,’5′,’6′};
>> keypad(keys)
erzeugt das GUI-Fenster

und liefert bei Betätigen der Tasten 1, 5 und 3 die Ausgabe
1
5
3
im Kommandofenster.
Lösung
function keypad(keys,ksize)
if nargin<2
ksize=[1 1];
end
nx=size(keys,2);
ny=size(keys,1);
% create figure
fhd=figure('menubar','none','numbertitle','off','units',...
'centimeters','position',[0 0 nx*ksize(1) ny*ksize(2)]);
movegui(fhd,'center')
% create keys
cbs='disp(get(gco,''String''))';
for i=0:nx-1
for j=0:ny-1
uicontrol(fhd,'style','push','units','normalized',...
'position',[i/nx j/ny 1/nx 1/ny], ...
'String',keys{ny-j,i+1},'Callback',cbs);
end
end
end


