function Kennfeld

data = magic (round(4 + (5-4).*rand(1,1)));         % erstellen eines zufälligen Kennfelds der Größe 5x5 oder 4x4
SizeKf = size(data);                                % ermitteln der Größe des Kennfelds

assignin ('base','data',data);

Kf_x = [150 180 200 250 270 290 310 330 350 370 400 500];           % Größen der x-Achse
Kf_y = [0 100 150 175 200 225 250 275 300 350 450 600];             % Größen der y-Achse


if SizeKf == 5                                          
    
    fig = figure('position',[550 550 500 160]);     % erstellen der figure
    
       x = 40;                                      % Position und Größe der Tabelle definieren (soll abhängig von der Größe des Kennfelds sein)
       y = 30;
       xx = 300;
       yy = 120;
            
       S.table = uitable ('parent',fig,'data',data,...      % erstellen der Tabelle
                          'ColumnWidth',{50},...
                          'position',[x y xx yy],...
                          'ColumnName',{Kf_x(1,1),Kf_x(1,2),Kf_x(1,3),Kf_x(1,4),Kf_x(1,5)},...
                          'RowName',{Kf_y(1,1),Kf_y(1,2),Kf_y(1,3),Kf_y(1,4),Kf_y(1,5)},...
                          'CellSelectionCallback',{@select_callback});
                      

    vonZeile = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[450 120 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    vonZ = uicontrol('style','text',...
    'position',[380 113 60 25],...
    'string','von Zeile');

                 
                 
    bisZeile = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[450 90 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    bisZ = uicontrol('style','text',...
    'position',[380 86 60 25],...
    'string','bis Zeile');
                 
    vonSpalte = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[450 60 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    vonS = uicontrol('style','text',...
    'position',[380 54 60 25],...
    'string','von Spalte');
                 
    bisSpalte = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[450 30 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    bisS = uicontrol('style','text',...
    'position',[380 24 60 25],...
    'string','bis Spalte');

else    
    
    fig = figure('position',[550 550 450 110]);
    
        x = 10; 
        y = 10;
        xx = 250;
        yy = 100;
            
        S.table = uitable ('parent',fig,'data',data,...
                           'ColumnWidth',{50},...
                           'position',[x y xx yy],...
                           'ColumnName',{Kf_x(1,1),Kf_x(1,2),Kf_x(1,3),Kf_x(1,4)},...
                           'RowName',{Kf_y(1,1),Kf_y(1,2),Kf_y(1,3),Kf_y(1,4)},...
                           'ColumnFormat', {'numeric', 'numeric', 'numeric'},...
                           'ColumnEditable',[false false false],...
                           'Cellselectioncallback',{@select_callback});
                       
                       
    vonZeile = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[340 86 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    vonZ = uicontrol('style','text',...
    'position',[280 80 60 25],...
    'string','von Zeile');

                 
                 
    bisZeile = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[340 58 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    bisZ = uicontrol('style','text',...
    'position',[280 52 60 25],...
    'string','bis Zeile');
                 
    vonSpalte = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[340 30 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    vonS = uicontrol('style','text',...
    'position',[280 26 60 25],...
    'string','von Spalte');
                 
    bisSpalte = uicontrol('parent',fig,'Style','edit',...        % erstellen des Edit-Fensters, in das der angeklickte Wert geladen werden soll      
                     'Position',[340 2 40 25],...
                     'string','',...
                     'fontweight','bold');
                 
    bisS = uicontrol('style','text',...
    'position',[280 0 60 25],...
    'string','bis Spalte');

end        


      function select_callback(hObject, eventdata)
      
        S.sel = eventdata.Indices;     
        %assignin ('base','sel',S.sel);
        
        selcols = unique(S.sel(:,2));  
        table = hObject.Data; 
        
        for idx = 1:numel(selcols)
            col = selcols(idx);
            xvals = S.sel(:,1);                 % Angabe der Zeile 
            xvals(S.sel(:,2) ~= col) = [];
            yvals = table(xvals, col)';         % Angabe des Wertes in der Zelle
            
            zvals = col*ones(size(xvals));      % Angabe der Spalte
     
        end
        
        set(vonZeile, 'string', S.sel(1,1));
        set(bisZeile, 'string', S.sel(end,1));
        set(vonSpalte, 'string', S.sel(1,2));
        set(bisSpalte, 'string', S.sel(end,2));
        
        end
    end
