Digital Signal Processing Reference
In-Depth Information
Programmbeispiel 1-2
Rechteckimpulszug
function y = rectangular(t,p,w)
% y = rectangular(t,p,w)
% t : time samples (t>=0)
% p : period
% w : impulse width
y = zeros(size(t));
%
default amplitude = 0
for n = 1:length(t)
x = mod(t(n),p);
%
mapping of t into fundamental period
if x >= 0 && x <= w
y(n) = 1;
%
set amplitude = 1
end
end
Anmerkungen:
(i) Das Programm enthält bereits einige MATLAB-eigene Funktionen, Operatoren und
Programmsteuerelemente. Mit dem
help
-Kommando zu
mod
(Modulo-Abbildung nach Division),
>=
,
&&
(UND) und
for
haben Sie Zugriff auf die jeweilige MATLAB-Dokumentation. (ii) Siehe auch
Menüpunkt
Function M-File
im
Editor/Debugger-Window
.
Die Approximation des periodischen Rechteckimpulszugs geschieht mit der aus der Mathe-
matik bekannten Fourierreihe.
12
1
x t
sin
2
n
1
2
t
2
2
n
1
n
0
Dazu erstellen Sie folgendes Programm:
Programmbeispiel 1-3
Fourierreihe des Rechteckimpulszuges
function y = fourier(t,N)
% y = fourier(t,N)
% t : time samples
% N : number of harmonics to be used (N<=1)
y = 0.5*ones(size(t));
%
default amplitude = 0
for n = 0:N-1
y = y + ((2/pi)/(2*n+1))*sin((2*n+1)*2*pi*t);
end
Speichern Sie die Funktion als
M-File
mit dem Namen
fourier.m
ab.
Abschließend wird das Hauptprogramm mir der Festlegung der Parameter, dem Aufruf der
Funktionen und der grafischen Ausgabe erstellt. Speichern Sie das folgende Hauptprogramm
als
M-File
mit dem Namen
fouriersyn.m
ab.
Programmbeispiel 1-4
Hauptprogramm
% Fourier synthesis of rectangular impulse train
t = 0:.01:3;
y = rectangular(t,1,.5);
yF = fourier(t,10);
plot(t,y,t,yF,
'LineWidth'
,2), grid
axis([0 3 -.2 1.2])
xlabel(
't \rightarrow'
), ylabel(
'y(t), y_{F}(t) \rightarrow'
)
title(
'Fourier synthesis of rectangular impulse train'
)