Você está na página 1de 18

I.

TIME DOMAIN CHARACTERIZATION


UP-SAMPLING OPERATION
The program shown below can be used to study up-sampling of a sinusoidal input sequences, the
up-sampling factor, and the frequency of the sinusoid in Hz. It then plots the input sequence and
its up sampled version.
PROGRAM
% Illustration of Up-Sampling by an Integer Factor
clf;
N = input('Input length = ');
L = input('Up-sampling Factor = ');
fo = input('Input signal frequency = ');
% Generate the input sinusoidal sequence
n = 0:N-1;
x = sin(2*pi*fo*n);
% Generate the up-sampled sequence
y = zeros(1, L*length(x));
y([1: L: length(y)]) = x;
% Plot the input and the output sequences
subplot(2,1,1)
stem(n,x);
title('Input Sequence');
xlabel('Time index n');ylabel('Amplitude');
subplot(2,1,2)
stem(n,y(1:length(x)));
title(['Output sequence up-sampled by', num2str(L)]);
xlabel('Time index n');ylabel('Amplitude');
INPUT DATA
Length of the Sequence-50
Frequency:0.12
Up-sampling factor:3
INPUT /OUTPUT WAVEFORM

Input Sequence
1

0.5 DOWN
Amplitude

-0.5

-1
0 5 10 15 20 25 30 35 40 45 50
Time index n
Output sequence up-sampled by3
1

0.5
Amplitude

-0.5

-1
0 5 10 15 20 25 30 35 40 45 50
Time index n

SAMPLING OPERATION
The program shown below can be used to study down sampling of a sinusoidal
input sequences, the down sampling factor, and the frequency of the sinusoid in
Hz. It then plots the input sequence and its down sampled sampled version.
PROGRAM
% Illustration of Down-Sampling by an Integer Factor
%
clf;
N = input('Output length = ');
M = input('Down-sampling Factor = ');
fo = input('Input signal frequency = ');
% Generate the input sinusoidal sequence
n = 0 : N-1;
m = 0 : N*M-1;
x = sin(2*pi*fo*m);
% Generate the down-sampled sequence
y = x([1 : M : length(x)]);
% Plot the input and the output sequences
subplot(2,1,1)
stem(n, x(1:N));
title('Input Sequence');
xlabel('Time index n');ylabel('Amplitude');
subplot(2,1,2)
stem(n, y);
title(['Output sequence down-sampled by ',num2str(M)]);
ylabel('Amplitude');xlabel('Time index n');

INPUT DATA
Length of the Sequence-50
Frequency: 0.042 Hz
Down sampling factor: 3
INPUT/OUTPUT WAVEFORM

Input Sequence
1

0.5
A m plitude

-0.5

-1
0 5 10 15 20 25 30 35 40 45 50
Time index n
Output sequence down-sampled by 3
1

0.5
A m plitude

-0.5

-1
0 5 10 15 20 25 30 35 40 45 50
Time index n

II. FREQUENCY DOMAIN CHARACTERIZATION


FREQUENCY-DOMAIN PROPERTIES OF THE UP-SAMPLER USING MATLAB
The program determines the output of the up-sampler and then plots the input and
output spectrums for L=5. The output spectrum consist of a factor of 5 compressed
version of the input spectrum followed by L-1=4 images.
PROGRAM
% Effect of Up-Sampling in the Frequency Domain
% Use fir2 to create a bandlimited input sequence
freq = [0 0.45 0.5 1];
mag = [0 1 0 0];
x = fir2(99, freq, mag);
% Evaluate and plot the input spectrum
[Xz, w] = freqz(x, 1, 512);
plot(w/pi, abs(Xz)); grid
xlabel('\omega/\pi'); ylabel('Magnitude');
title('Input spectrum');
pause
% Generate the up-sampled sequence
L = input('Type in the up-sampling factor = ');
y = zeros(1, L*length(x));
y([1: L: length(y)]) = x;
% Evaluate and plot the output spectrum
[Yz, w] = freqz(y, 1, 512);
plot(w/pi, abs(Yz)); grid
xlabel('\omega/\pi'); ylabel('Magnitude');
title('Output spectrum');

INPUT/OUTPUT WAVEFORM
Input spectrum
1
Output spectrum
0.9 1

0.9
0.8
0.8
0.7
0.7
0.6
0.6
M ag nitud e
Magnitude

0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2

0.1 0.1

0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
/ / 

Fig:MATLAB input and output spectrum of a factor of 5-up-sampler


FREQUENCY-DOMAIN PROPERTIES OF THE DOWN SAMPLER USING MATLAB
1. Down sampling factor of M=3,
2. Down sampling factor of M=2
PROGRAM
% Effect of Down-Sampling in the Frequency Domain
% Use fir2 to create a bandlimited input sequence
freq = [0 0.42 0.48 1];
mag = [0 1 0 0];
x = fir2(101, freq, mag);
% Evaluate and plot the input spectrum
[Xz, w] = freqz(x, 1, 512);
plot(w/pi, abs(Xz)); grid
xlabel('\omega/\pi'); ylabel('Magnitude');
title('Input spectrum');
pause
% Generate the down-sampled sequence
M = input('Type in the down-sampling factor = ');
y = x([1: M: length(x)]);
% Evaluate and plot the output spectrum
[Yz, w] = freqz(y, 1, 512);
plot(w/pi, abs(Yz)); grid
xlabel('\omega/\pi'); ylabel('Magnitude');
title('Output spectrum');
INPUT/OUTPUT WAVEFORM
Input spectrum
1

0.9 Output spectrum


0.5
0.8
0.45

0.7 0.4

0.6 0.35
Magnitude

0.5 0.3
Magnitude

0.25
0.4
0.2
0.3
0.15
0.2
0.1
0.1
0.05

0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
/ /
Output spectrum
0.5

0.45

0.4

0.35
M a g n it u d e

0.3

0.25

0.2

0.15

0.1

0.05

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
/

Fig: input spectrum,output spectrum for down sampling factor of M=3,output spectrum for a
down sampling factor of M=2
III. DECIMATION
DECIMATION OPERATION USING MATLAB

We consider the decimation of a sum of two sinusoidal sequences of normalized


frequencies f1 and f2 by an arbitrary down sampling factor M using program
shown below. The input data to the program are the length N of the input sequence
x[n],the down sampling factor M ,and two normalized frequencies in Hz.The
program uses a 30-tap FIR low pass decimation filter designed to have a stop band
edge at /M power5 .It then plots the input and the output sequences,for
N=100,M=2,f1=0.043,f2=0.031.
PROGRAM:
% Illustration of Decimation Process
%
clf;
N = input('Length of input signal = ');
M = input('Down-sampling factor = ');
f1 = input('Frequency of first sinusoid = ');
f2 = input('Frequency of second sinusoid = ');
n = 0:N-1;
% Generate the input sequence
x = sin(2*pi*f1*n) + sin(2*pi*f2*n);
% Generate the decimated output sequence
y = decimate(x,M,'fir');
% Plot the input and the output sequences
subplot(2,1,1)
stem(n,x(1:N));
title('Input sequence');
xlabel('Time index n');ylabel('Amplitude');
subplot(2,1,2)
m=0:N/M-1;
stem(m,y(1:N/M));
title('Output sequence');
xlabel('Time index n'); ylabel('Amplitude');

INPUT/OUTPUT WAVEFORM

Input sequence
2

1
Amplitude

-1

-2
0 10 20 30 40 50 60 70 80 90 100
Time index n
Output sequence
2

1
Amplitude

-1

-2
0 5 10 15 20 25 30 35 40 45 50
Time index n
IV. INTERPOLATION
INTERPOLATION OPERATION USING MATLAB

To illustrate interpolation process,we consider an input x that is given by a sum of two sinusoidal
sequences. Program is used to find its interpolated output y for an upsampling factor of L. The
input data to th program are the length N of the input vector x,the upsamler factor L,anKd two
normalized frequencies in hz.The frequencies of the sinusoids considered here are the f1=0.043
and f2=0.031,while the interpolation factor is 2.The input length is 50.
PROGRAM:

% Illustration of Interpolation Process


%
clf;
N = input('Length of input signal = ');
L = input('Up-sampling factor = ');
f1 = input('Frequency of first sinusoid = ');
f2 = input('Frequency of second sinusoid = ');
% Generate the input sequence
n = 0:N-1;
x = sin(2*pi*f1*n) + sin(2*pi*f2*n);
% Generate the interpolated output sequence
y = interp(x,L);
% Plot the input and the output sequences
subplot(2,1,1)
stem(n,x(1:N));
title('Input sequence');
xlabel('Time index n'); ylabel('Amplitude');
subplot(2,1,2)
m=0:N*L-1;
stem(m,y(1:N*L));
title('Output sequence');
xlabel('Time index n'); ylabel('Amplitude');
INPUT/OUTPUT WAVEFORM:
Input sequence
2
A m p lit u d e

-1

-2
0 5 10 15 20 25 30 35 40 45 50
Time index n
Output sequence
2
A m p lit u d e

-1

-2
0 10 20 30 40 50 60 70 80 90 100
Time index n

V. SAMPLE RATE ALTERATION


SAMPLE RATE ALTERATION BY A RATIO OF TWO INTEGERS
In this program, we consider the sampling rate increase by a ratio of two positive integers of a
signal composed of two sinusoids. The input data to the program are the length N of the input
vector x, the upsampling factor L, the down sampling factor M, and the two frequencies.
PROGRAM
% Program
% Illustration of Sampling Rate Alteration by
% a Ratio of Two Integers
%
clf;
N = input('Length of input signal = ');
L = input('Up-sampling factor = ');
M = input('Down-sampling factor = ');
f1 = input('Frequency of first sinusoid = ');
f2 = input('Frequency of second sinusoid = ');
% Generate the input sequence
n = 0:N-1;
x = sin(2*pi*f1*n) + sin(2*pi*f2*n);
% Generate the resampled output sequence
y = resample(x,L,M);
% Plot the input and the output sequences
subplot(2,1,1)
stem(n,x(1:N));
title('Input sequence');
xlabel('Time index n'); ylabel('Amplitude');
subplot(2,1,2)
m=0:N*L/M-1;
stem(m,y(1:N*L/M));
title('Output sequence');
xlabel('Time index n'); ylabel('Amplitude');

INPUT
Length of input signal = 25
Up-sampling factor = 5
Down-sampling factor = 3
Frequency of first sinusoid = 0.043
Frequency of second sinusoid = 0.031

INPUT/OUTPUT WAVEFORM
Input sequence
2

1
Amplitude

-1

-2
0 5 10 15 20 25
Time index n
Output sequence
2

1
Amplitude

-1

-2
0 5 10 15 20 25 30 35 40
Time index n

Fig: Illustration Of Sample Rate Increases By A Rational Number 5/3

VI. NYQUIST FILTERS


DESIGN OF Lth BAND FIR FILTER USING THE WINDOWED FORIER SERIES APPROACH
Design a length-23 half-band (L=2) linear phase low pass filter using the
windowed forier series approach with a Hamming window.
PROGRAM
% Program
% Design of Lth Band FIR Filter Using the
% Windowed Fourier Series Approach
%
N = input('Type in the filter length = ');
L = input('Type in the value of L = ');
K = (N-1)/2;
n = -K:K;
% Generate the truncated impulse response of the ideal
% lowpass filter
b = sinc(n/L)/L;
% Generate the window sequence
win = hamming(N);
% Generate the coefficients of the windowed filter
c = b.*win';
% Plot the gain response of the windowed filter
[h,w] = freqz(c,1,256);
g = 20*log10(abs(h));
plot(w/pi,g);grid
xlabel('\omega/\pi');ylabel('Gain, dB');

INPUT
Type in the filter length = 23
Type in the value of L = 2
INPUT/OUTPUT WAVEFORM
20

-20
Gain, dB

-40

-60

-80

-100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
/

VII. QMF FILTER BANK


FREQUENCY RESPONSES OF JOHNSTON'S QMF FILTERS

The impulse response coefficients of the length -12 linear phase low pass filter 12B
of Johnston are given by
Filter coefficients = -0.006443977 -0.00758164 +0.09808522 +0.02745539 -0.0913825
+0.4807962
Matlab program is used to verify the performance of the above filter H0(z).

PROGRAM
% Program

% Frequency Responses of Johnston's QMF Filters


% Type in prototype lowpass filter coefficients
clf;
B1 = input('Filter coefficients = ');
B1 = [B1 fliplr(B1)];
% Generate the complementary highpass filter
L = length(B1);
for k = 1:L
B2(k) = ((-1)^k)*B1(k);
end
% Compute the gain responses of the two filters
[H1z, w] = freqz(B1, 1, 256);
h1 = abs(H1z); g1 = 20*log10(h1);
[H2z, w] = freqz(B2, 1, 256);
h2 = abs(H2z); g2 = 20*log10(h2);
% Plot the gain responses of the two filters
plot(w/pi, g1,'-',w/pi, g2,'--');axis([0 1 -80 5]);grid
xlabel('Normalized frequency');ylabel('Gain in dB')
pause
% Compute the sum of the square magnitude responses
for i = 1:256,
sum(i) = (h1(i)*h2(i)) + (h2(i)*h1(i));
end
d =10*log10(sum);
% Plot the sum of the square magnitude responses
plot(w/pi,sum);grid;
xlabel('Normalized frequency')
ylabel('Amplitude distortion in dB')

INPUT
Filter coefficients = -0.006443977 -0.00758164 +0.09808522 +0.02745539 -0.0913825
+0.4807962
INPUTOUTPUT WAVEFORM

-10

-20
G a in in dB

-30

-40

-50

-60

-70

-80
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized frequency

Fig: Johnston’s 12 B filter: Gain respons

1.4
A m p lit u d e d is t o rt io n in d B

1.2

0.8

0.6

0.4

0.2

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized frequency

Fig: Johnston’s 12 B filter: Amplitude distortion

FREQUENCY RESPONSES OF TREE-STRUCTURED QMF FILTERS

Design of a four channel QMF bank by iterating the two-channel QMF bank based on the filter
12B of Johnston
PROGRAM

% Program
% Frequency Responses of Tree-Structured QMF Filters
%
clf;
% Type in prototype lowpass filter coefficients
B = input('Filter coefficients = ');
B1 = [B fliplr(B)];
% Generate the complementary highpass filter
L = length(B1);
for k = 1:L
B2(k) = ((-1)^k)*B1(k);
end
% Determine the coefficients of the four filters
B10 = zeros(1, 2*length(B1));
B10([1: 2: length(B10)]) = B1;
B11 = zeros(1, 2*length(B2));
B11([1: 2: length(B11)]) = B2;
C0 = conv(B1, B10);C1 = conv(B1, B11);
C2 = conv(B2, B10);C3 = conv(B2, B11);
% Determine the frequency responses
[H0z, w] = freqz(C0, 1, 256);
h0 = abs(H0z);
M0 = 20*log10(h0);
[H1z, w] = freqz(C1, 1, 256);
h1 = abs(H1z);
M1 = 20*log10(h1);
[H2z, w] = freqz(C2, 1, 256);
h2 = abs(H2z);
M2 = 20*log10(h2);
[H3z, w] = freqz(C3, 1, 256);
h3 = abs(H3z);
M3 = 20*log10(h3);
plot(w/pi, M0,'r-',w/pi, M1,'b--',w/pi, M3,'g-.',w/pi, M2,'m:');grid
axis([0 1 -100 20]);
xlabel('\omega /\pi');ylabel('Gain, dB')
legend('H_{O}(z)','H_{1}(z)', 'H_{2}(z)', 'H_{3}(z)')

INPUT

Filter coefficients = -0.006443977 -0.00758164 +0.09808522 +0.02745539 -0.0913825


+0.4807962
INPUTOUTPUT WAVEFORM

20
HO(z)
H1(z)
0
H2(z)
H3(z)
-20
G a in , d B

-40

-60

-80

-100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
 /

Você também pode gostar