Digital Signal Processing Reference
In-Depth Information
1.2.2
Programmkontrolle und logische Operatoren
Programme mit nur einfachen Anweisungen und sequenziellem Ablauf sind meist nur von ge-
ringem Nutzen. Typische Aufgabenstellungen der Signalverarbeitung verlangen nach beding-
ten Anweisungen und Kontrolle des Programmablaufs. MATLAB bringt dazu die üblichen, aus
höheren Programmiersprachen bekannten Werkzeuge mit:
bedingte Anweisung
if-else-end
und
if-elseif-else-end
Auswahlanweisung
switch-case-end
Schleifen
for-end
,
while-end
und
break
Für die bedingten Anweisungen werden die Vergleichsoperatoren in Tabelle 1-2 verwendet.
Dabei lassen sich gegebenenfalls mehrere Bedingungen durch die logischen Operatoren in
Tabelle 1-3 verknüpfen.
Tabelle 1-2
Vergleichsoperatoren
Operator
Definition
Operator
Definition
Operator
Definition
>
<
==
größer
kleiner
gleich
>=
größer oder gleich
<=
kleiner oder gleich
~=
ungleich
Um den Umfang der Einführung kurz zu halten, wird hier auf eine detaillierte Darstellung der
Anwendungsmöglichkeiten verzichtet. Sie können bei Bedarf der MATLAB-Dokumentation
entnommen werden. Einige Beispiele finden
sich in den Versuchen.
Als einziges Beispiel soll hier die While-
Schleife verwendet werden. Mit ihr lässt sich
nämlich die kleinste, von MATLAB darstell-
bare positive Maschinenzahl elegant bestim-
men. Sie ist eine wichtige Größe zur Ab-
schätzung der Rechengenauigkeit der zu-
grundeliegenden Gleitkommaarithmetik. Er-
stellen Sie dazu das M-File zum Programm-
beispiel 1-1.
Anmerkungen:
(i) Die letzte Zeile ist ein Beispiel
für die formatierte Bildschirmausgabe. (ii) Den
Zahlenwert erhalten Sie auch mit dem MATLAB-
Befehl
eps(0)
.
Tabelle 1-3
Logische Operatoren
Operator
1
Definition
&
UND (AND)
|
ODER (OR)
~
Negation (NOT)
XOR
Exklusives ODER (exclusive OR)
1
auch && und || zur beschleunigten Programm-
ausführung (short-cicuit)
Programmbeispiel 1-1
Bestimmung der kleinsten positiven Maschinenzahl
% Precision of the floating point operations
a = 1; n = 0;
while a > 0
n = n + 1;
EPS0 = a;
a = a/2;
end
fprintf(
'EPS0 = %g , n = %i\n'
,EPS0,n)