% Listing 8.1  Beispiel für eine Parameterüberprüfung

function func(par)
   if ~isa(par,’integer’)
      error(MOD1:nichtInteger, ‘Eingangsparameter ist nicht
                                  vom Typ Integer’);
   end
   if par > 97
      error(MOD1:unzWert, ‘Unzulässiger Wert’);
   end
   
   
   
% Listing 8.2  Parameterüberprüfung

function s=schnittpunkt_geraden_2d(a, u, b, v)
% g1:  x=a+k1*u;  g2: x=b+k2*v;   nur Spaltenvektoren

a=[2 0]';  u=[0 1]';
b=[0 -1]'; v=[0 1]';

warning off MATLAB:singularMatrix
try
    A=[u -v]; r=b-a; % Systemmatrix und Störvektor
    k=A\r;
catch
     error(ROBOMATS:nSpalt,'Vektoren sind nicht als 
                           Spaltenvektoren definiert.');
end
[mes id]=lastwarn;
if id=='MATLAB:singularMatrix'

    error(ROBOMATS:keinSchnitt,'Kein Schnittpunkt, da die 
                               Geraden parallel sind');
end
s=a+k(1)*u      % Schnittpunkt


% Listing 8.3  Modifiziertes Skript aus Listing 5.7 zur Durchführung einer Zeitmessung


 %  - Quellcode aus Listing 5.7 - 

tic
[q_l s_l stat]=robot_bew(bahn);
t1=toc

tic
a1_geschw=robot_bahn_ausw(q_l,1);
t2=toc

tic
robot_bahn_vis(q_l,2,a1_geschw);
t3=toc


% Listing 8.4  Berechnung in einer Schleife und als Vektor

% Realisierung als Schleife
tic
x = .01;
for k = 1:1001
   y(k) = log10(x);
   x = x + .01;
end
t1=toc

% Realisierung als Vektor
tic
x = .01:.01:10;
y = log10(x);
t2=toc



% Listing 8.5  Aufteilung der M-Datei der Funktion robot_bew in Zellen. 

%% Planung Trajektorie
switch typ             
% ...
                            
%% Planung Geschwindigkeitsprofil
if typ==PTP %PTP  
% ...
        
%% Interpolation Geschwindigkeitsprofil
tg=tba+tka+tva;                 
% ...

%% Interpolation Trajektorie
    case PTP %PTP
%     ...


% Listing 8.6  Vorbesetzung von Vektoren zur Verbesserung der Laufzeit

71:  tb=zeros(1,6); tk=zeros(1,6); tv=zeros(1,6); 
72:  for dd=1:n_achsen 
73:      [tb(dd), tk(dd), tv(dd)]=geschw_lin_plan(sg(dd),



% Listing 8.7   Ausschnitt aus Listing 4.9 mit Angabe der Zeilennummer, Funktion rtraf_6_gelenk

1:  function [q] = rtraf_6_gelenk(ZF,kf,robot)
 %   ...
70: if (oa+ua<l | norm(oa-ua)>l | l<eps )
71 :     error('H ausserhalb der Reichweite');
72:      return



% Listing 8.8  Verbesserte Fehlerbearbeitung der Funktion robot_bew

% ...
switch typ             
    case PTP %PTP

        try
        q1= rtraf_6_gelenk(P1,kf1,rob_para);
        q2= rtraf_6_gelenk(P2,kf2,rob_para);
        catch
            s=lasterror;
            if s.identifier=='rtraf_6_gelenk:ausreich'
                warning('Der Stützpunkt ist ausserhalb der
                         Reichweite - Abbruch der Bewegung');
                q_l=0; s_l=0; stat=0;
                return
            else
                rethrow(s);
            end
        end

        sg=q2-q1;
    case CPL %CPLIN
        ul1=P1(1:3,4);
        ul2=P2(1:3,4);
        sg(1)=norm(ul2-ul1);
        [sg(2), sg(3)]=ori_plan(P1,P2);
    case CPC %CPCIR
        try
            [sg(1) KR r]=kreis_plan(P1, P2, P3); 
            [sg(2), sg(3)]=ori_plan(P1,P2);
        catch
            s=lasterror;
            if s.identifier=='kreisplan:punkte'
                warning('Die Kreispunkte liegen zu eng');
                q_l=0; s_l=0; stat=0;
                return
            else
                rethrow(s);
        end
end


        
        












