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' )
Search WWH ::




Custom Search