0% found this document useful (0 votes)
12 views28 pages

LABEX5

ttxlths

Uploaded by

22119094
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views28 pages

LABEX5

ttxlths

Uploaded by

22119094
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 28

P7.12 Design a highpass filter using one of the fixed window functions.

The
specifications are
stopband edge: 0.4π, As = 50 dB
passband edge: 0.6π, Rp = 0.004 dB
ws = 0.4*pi;
wp = 0.6*pi;
%As = 50;
tr_width = wp - ws; %chieu rong cua vung chuyen tiep
M = ceil(6.6*pi/tr_width) + 10 %tinh bac bo loc
n = [0:1:M-1];
wc = (ws+wp)/2; % tan so cat cua bo loc thong cao
%dap ung xung ly tuong cua bo loc thong cao
hd = ideal_lp(pi,M) - ideal_lp(wc,M);
w_ham = (hamming(M))'; %ap dung cua so Hamming
h = hd .* w_ham; % dap ung xung thuc te
%ham tinh dap ung tan so theo dB
[db,mag,pha,grd,w] = freqz_m(h,[1]);
delta_w = 2*pi/1000; %do phan giai tan so chia thanh 100
diem

% dam bao chi so khong vuot qua gioi han cua mang
wp_idx = floor(wp/delta_w) + 1; % chi so tuong ung tan so
wp1
ws_idx = floor(ws/delta_w) + 1; % chi so tuong ung tan so
ws1

Rp = -min(db(wp_idx:end)); %do gon song trong dai thong


As = -round(max(db(1:ws_idx))); %suy giam toi thieu o dai
dung
% plots
%dap ung xung li tuong(hd)
subplot(2,2,1); stem(n,hd);
title('Ideal Impulse Response')
axis([0 M-1 -0.1 0.3]); xlabel('n'); ylabel('hd(n)')
%cua so Hamming (w_ham)
subplot(2,2,2); stem(n,w_ham);
title('Hamming Window')
axis([0 M-1 0 1.1]); xlabel('n'); ylabel('w(n)')
%dap ung xung thuc te (h)
subplot(2,2,3); stem(n,h);
title('Actual Impulse Response')
axis([0 M-1 -0.1 0.3]); xlabel('n'); ylabel('h(n)')
%dap ung bien do theo dB (db)
subplot(2,2,4); plot(w/pi,db);
title('Magnitude Response in dB');grid
axis([0 1 -100 10]); xlabel('frequency in pi units');
ylabel('Decibels')

1
Ideal Impulse Response Hamming Window
0.3
1
0.2
hd(n)

w(n)
0.1
0.5

-0.1 0
0 10 20 30 40 0 10 20 30 40
n n
Actual Impulse Response Magnitude Response in dB
0.3
0
0.2
Decibels
h(n)

0.1
-50

-0.1 -100
0 10 20 30 40 0 0.5 1
n frequency in pi units

P5.1
1. ˜x1(n) = {4, 1, −1, 1}, N = 4

xtilde1 = [4,1,-1,1]; N = 4; Xtilde1 = dfs(xtilde1,N)

Xtilde1 =
5.0000 + 0.0000i 5.0000 + 0.0000i 1.0000 - 0.0000i
5.0000 + 0.0000i
2. ˜x2(n) = {2, 0, 0, 0, −1, 0, 0, 0}, N = 8
xtilde2 = [2,0,0,0,-1,0,0,0]; N = 8; Xtilde2 =
dfs(xtilde2,N)

Columns 1 through 7
1.0000 + 0.0000i 3.0000 + 0.0000i 1.0000 - 0.0000i
3.0000 + 0.0000i 1.0000 - 0.0000i 3.0000 + 0.0000i
1.0000 - 0.0000i

Column 8
3.0000 + 0.0000i
3. ˜x3(n) = {1, 0, −1, −1, 0}, N = 5
xtilde3 = [1,0,-1,-1,0]; N = 5; Xtilde3 = dfs(xtilde3,N)

2
Xtilde3 =
-1.0000 + 0.0000i 2.6180 + 0.0000i 0.3820 - 0.0000i
0.3820 + 0.0000i 2.6180 + 0.0000i
4. ˜x4(n) = {0, 0, 2j, 0, 2j, 0}, N = 6
xtilde4 = [0,0,2j,0,2j,0]; N = 6; Xtilde4 = dfs(xtilde4,N)

Xtilde4 =
0.0000 + 4.0000i 0.0000 - 2.0000i 0.0000 - 2.0000i -
0.0000 + 4.0000i 0.0000 - 2.0000i 0.0000 - 2.0000i
5. ˜x5(n) = {3, 2, 1}, N = 3
xtilde5 = [3,2,1]; N = 3; Xtilde5 = dfs(xtilde5,N)
Xtilde5 =
6.0000 + 0.0000i 1.5000 - 0.8660i 1.5000 + 0.8660i

P5_2.
1. ˜X1(k) = {4, 3j, −3j}, N = 3
Xtilde1 = [4,j*3,-j*3]; N = 3; xtilde1 = idfs(Xtilde1,N)

xtilde1 =

1.3333 + 0.0000i -0.3987 + 0.0000i 3.0654 - 0.0000i

2. ˜X2(k) = {j, 2j, 3j, 4j}, N = 4


Xtilde2 = [j,j*2,j*3,j*4]; N = 4; xtilde2 = idfs(Xtilde2,N)

xtilde2 =

0.0000 + 2.5000i 0.5000 - 0.5000i -0.0000 - 0.5000i -0.5000 -


0.5000i

3. ˜X3(k) = {1, 2+3j, 4, 2 − 3j}, N = 4


Xtilde3 = [1,2+j*3,4,2-j*3]; N = 4; xtilde3 = idfs(Xtilde3,N)

xtilde3 =

2.2500 + 0.0000i -2.2500 + 0.0000i 0.2500 + 0.0000i 0.7500 -


0.0000i

4. ˜X4(k) = {0, 0, 2, 0, 0}, N = 5


Xtilde4 = [0,0,2,0,0]; N = 5; xtilde4 = idfs(Xtilde4,N)

xtilde4 =

3
0.4000 + 0.0000i -0.3236 + 0.2351i 0.1236 - 0.3804i 0.1236 +
0.3804i -0.3236 - 0.2351i

5. ˜X5(k) = {3, 0, 0, 0, −3, 0, 0, 0}, N = 8


Xtilde5 = [3,0,0,0,-3,0,0,0]; N = 8; xtilde5 = idfs(Xtilde5,N)

xtilde5 =

Columns 1 through 5

0.0000 + 0.0000i 0.7500 - 0.0000i 0.0000 + 0.0000i 0.7500 -


0.0000i 0.0000 + 0.0000i

Columns 6 through 8

0.7500 - 0.0000i 0.0000 + 0.0000i 0.7500 - 0.0000i

P5.3 Cho tuần hoàn với chu kỳ cơ bản N = 40 trong đó một chu kỳ được cho bởi

và cho là tuần hoàn với chu kỳ cơ bản N = 80, trong đó


một chu kỳ được cho bởi

Hai chuỗi tuần hoàn này khác nhau về tính tuần hoàn nhưng mặt khác có cùng
các mẫu khác 0
1.
n1 = [0:39]; xtilde1 =
[5*sin(0.1*pi*[0:19]),zeros(1,20)]; N1 = length(n1);
[Xtilde1] = dft(xtilde1,N1); k1 = n1;
mag_Xtilde1 = abs(Xtilde1); pha_Xtilde1 =
angle(Xtilde1)*180/pi;
zei = find(mag_Xtilde1 < 1000*eps);
pha_Xtilde1(zei) = zeros(1,length(zei));
Hf_1 = figure('Units','normalized','position',
[0.1,0.1,0.8,0.8],...
'color',[0,0,0],'paperunits','inches','paperposition',
[0,0,6,5]);
set(Hf_1,'NumberTitle','off','Name','P5.3.1');
subplot(3,1,1); H_s1 = stem(n1,xtilde1,'filled');
set(H_s1,'markersize',3);

4
axis([-1,N1,-6,6]);
title('One period of the periodic sequence
xtilde_1(n)','fontsize',10);
ntick = [n1(1):2:n1(N1),N1]'; ylabel('Amplitude');
set(gca,'XTickMode','manual','XTick',ntick,'FontSize',8)
;
subplot(3,1,2); H_s2 = stem(k1,mag_Xtilde1,'filled');
set(H_s2,'markersize',3);
axis([-1,N1,0,max(mag_Xtilde1)+10]);
title('Magnitude of Xtilde_1(k)','fontsize',10);
ylabel('Magnitude');
ktick = [k1(1):2:k1(N1),N1]';
set(gca,'XTickMode','manual','XTick',ktick,'FontSize',8)
subplot(3,1,3); H_s3 = stem(k1,pha_Xtilde1,'filled');
set(H_s3,'markersize',3);
title('Phase of Xtilde_1(k)','fontsize',10);
xlabel('k'); ylabel('Degrees');
ktick = [k1(1):2:k1(N1),N1]'; axis([-1,N1,-200,200]);
set(gca,'XTickMode','manual','XTick',ktick,'FontSize',8)
;
set(gca,'YTickMode','manual','YTick',[-180;-
90;0;90;180]);

DFT Function:
function [Xk] = dft(xn,N)
% Computes Discrete Fourier Transform
% -----------------------------------
% [Xk] = dft(xn,N)
% Xk = DFT coeff. array over 0 <= k <= N-1
% xn = N-point finite-duration sequence
% N = Length of DFT
%
n = [0:1:N-1]; % row vector for n
k = [0:1:N-1]; % row vecor for k
WN = exp(-j*2*pi/N); % Wn factor
nk = n'*k; % creates a N by N matrix of nk values
WNnk = WN .^ nk; % DFT matrix
Xk = xn * WNnk; % row vector for DFT coefficients

5
One period of the periodic sequence xtilde1 (n)
6

2
Amplitude

-2

-4

-6
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Magnitude of Xtilde1 (k)


60

50

40
Magnitude

30

20

10

0
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Phase of Xtilde1 (k)


180

90
Degrees

-90

-180
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40
k

2.
n2 = [0:79]; xtilde2 = [xtilde1, zeros(1,40)]; N2 =
length(n2);
[Xtilde2] = dft(xtilde2,N2); k2 = n2;
mag_Xtilde2 = abs(Xtilde2); pha_Xtilde2 =
angle(Xtilde2)*180/pi;
zei = find(mag_Xtilde2 < 1000*eps);
pha_Xtilde2(zei) = zeros(1,length(zei));
Hf_2 = figure('Units','normalized','position',
[0.1,0.1,0.8,0.8],...
'color',[0,0,0],'paperunits','inches','paperposition',
[0,0,6,5]);
set(Hf_2,'NumberTitle','off','Name','P5.3.2');
subplot(3,1,1); H_s1 = stem(n2,xtilde2,'filled');
set(H_s1,'markersize',3);
title('One period of the periodic sequence
xtilde2(n)','fontsize',10);
ntick = [n2(1):5:n2(N2),N2]'; ylabel('xtilde2'); axis([-
1,N2,-6,6]);
set(gca,'XTickMode','manual','XTick',ntick)
subplot(3,1,2); H_s2 = stem(k2,mag_Xtilde2,'filled');
set(H_s2,'markersize',3);
axis([-1,N2,0,60]);

6
title('Magnitude of Xtilde2(k)','fontsize',10);
ylabel('|Xtilde2|')
ktick = [k2(1):5:k2(N2),N2]';
set(gca,'XTickMode','manual','XTick',ktick)
subplot(3,1,3); H_s3 = stem(k2,pha_Xtilde2,'filled');
set(H_s3,'markersize',3);
title('Phase of Xtilde2(k)','fontsize',10); xlabel('k');
ylabel('Degrees')
ktick = [k2(1):5:k2(N2),N2]'; axis([-1,N2,-200,200]);
set(gca,'XTickMode','manual','XTick',ktick)
set(gca,'YTickMode','manual','YTick',[-180;-
90;0;90;180])

One period of the periodic sequence xtilde2(n)


6
4
2
xtilde2

0
-2
-4
-6
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80

Magnitude of Xtilde2(k)
60

40
|Xtilde2|

20

0
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80

Phase of Xtilde2(k)
180

90
Degrees

-90

-180
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80
k

P4.17

1.

7
i. Đáp ứng xung:

ii. Phương trình sai phân từ hàm H(z) trên:

iii. Giản đồ cực-0:


% Define parameters
syms z n
H_z = (z + 1) / (z - 0.5); % System function H(z)

%% (i) Impulse Response


% Compute inverse z-transform
h_n = iztrans(H_z);
disp('Impulse response h(n):');
disp(h_n);

%% (ii) Difference Equation


% Derive difference equation by multiplying both sides
by (z - 0.5)
numerator = z + 1;
denominator = z - 0.5;
difference_eq = collect(numerator - denominator * H_z ==
0, z);
disp('Difference equation:');
disp(difference_eq);

%% (iii) Pole-Zero Plot


% Find poles and zeros
[num, den] = numden(H_z);
poles = solve(den, z);
zeros = solve(num, z);

figure;
zplane(double(coeffs(num, 'All')), double(coeffs(den,
'All')));
title('Pole-Zero Plot');
disp('Poles:');
disp(poles);
disp('Zeros:');
disp(zeros);

8
%% (iv) Output y(n) for x(n) = 3 * cos(pi*n/3) * u(n)
% Define input x(n)
x_n = 3 * cos(pi * n / 3) * heaviside(n);

% Compute frequency response at ? = ±?/3


w = pi / 3;
H_w_pos = subs(H_z, z, exp(1i * w)); % H(e^(j?/3))
H_w_neg = subs(H_z, z, exp(-1i * w)); % H(e^(-j?/3))

% Output y(n)
y_n = 3/2 * H_w_pos * exp(1i * w * n) + 3/2 * H_w_neg *
exp(-1i * w * n);
disp('Output y(n):');
disp(simplify(y_n));

Pole-Zero Plot
1

0.8

0.6

0.4
Imaginary Part

0.2

-0.2

-0.4

-0.6

-0.8

-1

-1 -0.5 0 0.5 1
Real Part
iv: ngõ ra y(n) khi x(n)=3cos(πn/3)u(n)

2.

i. Đáp ứng xung:

9
ii. Phương trình sai phân từ hàm H(z) trên:

iii. Giản đồ cực-0:

iv: ngõ ra y(n) khi x(n)=3cos(πn/3)u(n)

P4_18
1. y(n) = [x(n) + 2x(n − 1) + x(n − 3)] /4
i.
1 Y ( z) 1  2z  1  z  3
Y ( z)  [ X ( z)  2z  1 X ( z)  z  3 X ( z)  H ( z)  
4 X ( z) 4
ii.
1
h(n)  [ (n)  2 (n  1)   (n  3)]
4
iii.

10
Pole-Zero Plot

0.5

Imaginary Part 0
3

-0.5

-1

-2 -1.5 -1 -0.5 0 0.5 1


Real Part
iv.
2
X ( z ) Z [2(0.9) n u (n)]  , | z | 0.9
1  0 .9 z  1
 1  2 z  1  z  3  2 
 Y ( z ) H ( z ) X ( z )    1 
, | z | 0.9
 4   1  0 .9 z 
990
1310 50  1 5  2
  z  z  431  1 , | z | 0.9
729 81 9 1  0 .9 z
Nên:
1310 50 5 990
y (n)   ( n)   (n  1)   (n  2)  ( 0. 9 ) n u ( n )
729 81 9 431
2. y(n) = x(n) + 0.5x(n − 1) − 0.5y(n − 1) + 0.25y(n − 2)
i.
Y ( z )  X ( z )  0.5 z  1 X ( z )  0.5 z  1Y ( z )  0.25 z  2Y ( z )
Y ( z) 1  0.5 z  1 1  0.5 z  1
 H ( z)    , | z | 0.809
X ( z ) 1  0.5 z  1  0.25 z  2 (1  0.809 z  1 )(1  0.309 z  1 )
ii.
 1  0.5 z  1   0.2764 0.7236 
h ( n ) Z  1  1 
Z  1  
 (1  0.809 z 1
)(1  0.309 z )   1  0.809 z 1
1  0.309 z  1 
0.2764( 0.809) n u (n)  0.7236(0.308) n u (n)

iii.

11
Pole-Zero Plot
1

0.8

0.6

0.4
Imaginary Part

0.2

-0.2

-0.4

-0.6

-0.8

-1

-1 -0.5 0 0.5 1
Real Part
iv.
2
X ( z ) Z [2(0.9) n u (n)]  , | z | 0.9
1  0.9 z  1
 1  0.5 z  1  2 
 Y ( z ) H ( z ) X ( z )  1

 2  1 
, | z | 0.9
 1  0.5 z  0.25 z   1  0.9 z 
0.2617 0.7567 2.495
   , | z | 0.9
1  0.809 z  1 1  0.309 z  1 1  0.9 z  1
Nên
y (n) 0.2167( 0.809) n u (n)  0.7567(0.309) n u (n)  2.495(0.9) n u (n)
5.
 
4 4
m 0
(0.8) m x(n  m)  l 1
(0.9) l y (n  l )
i.
4 4
Y ( z )  (0.8) m z  m X ( z )   (0.9) l z  lY ( z )
m 0 l 1

Y ( z )  m 0 (0.8) z
4 m m

 H ( z)  
X ( z ) 1   4 (0.9)l z  l
l 1

1  0.8 z  1  0.64  z  2  0.512z  3  0.4096z  4


 , | z | 0.9
(1  0.5562z  1  0.81z  2 )(1  1.4562z  1  0.81z  2 )
ii.
 0.1873  0.0651z  1 0.1884  0.1353z  1 
h(n) Z  1  0.6243  1 2
 
 1  0.5562z  0.81z 1  1.4562z  1  0.81z  2 
0.1884 (n)  [0.1879(0.9) n cos(0.4n  4.63o )  0.1885(0.9) n cos(0.8n  1.1o )]u (n)
iii.

12
iv.

Nên

P3.17

Code:
b = [0.2, 0.2, 0.2, 0.2]; % filter coefficient array b
a = 1.0; % filter coefficient array a
m = 0:length(b)-1; l = 0:length(a)-1; % index arrays m and l
K = 500; k = 0:1:K; % index array k for frequencies
w = pi*k/K; % [0, pi] axis divided into 501 points.
num = b * exp(-j*m'*w); % Numerator calculations
den = a * exp(-j*l'*w); % Denominator calculations
H = num ./ den; % Frequency response
magH = abs(H); angH = angle(H); % mag and phase responses
subplot(2,1,1); plot(w/pi,magH); grid; axis([0,1,0,1])
xlabel('frequency in pi units'); ylabel('|H|');
title('Magnitude Response');
subplot(2,1,2); plot(w/pi,angH/pi); grid
xlabel('frequency in pi units'); ylabel('Phase in pi
Radians');
title('Phase Response');

giải thích:
b = [0.2, 0.2, 0.2, 0.2]: Đây là mảng các hệ số của phần tử x.
a = 1.0: Đây là hệ số của phần tử y.
m=0
(b)-1 và l = 0

13
(a)-1: Đây là các mảng chỉ mục cho các hệ số của bộ lọc b và a. Với b, mảng m sẽ có giá
trị là [0, 1, 2, 3], và với a, mảng l sẽ chỉ có một giá trị là [0] (vì a là một số vô hướng
duy nhất).
K = 500: Đây là số lượng điểm tần số mà bộ lọc sẽ được tính toán đáp ứng.
k = 0:1
: Mảng chỉ mục k cho các điểm tần số, từ 0 đến 500.
w = pi*k/K: Tạo trục tần số w trải dài từ 0 đến π (với K điểm), là các tần số góc tính bằng
radians.
num = b * exp(-j*m'*w): Đây là phần tử số trong đáp ứng tần số của bộ lọc. Với mỗi
tần số w, biểu thức này tính toán đáp ứng tần số của tử số bằng cách áp dụng biến đổi
Fourier cho các hệ số tử số b.
den = a * exp(-j*l'*w): Đây là phần mẫu số trong đáp ứng tần số, chỉ có hệ số mẫu a (là
1 trong trường hợp này). Với bộ lọc FIR, a thường là 1 và không ảnh hưởng đến đáp ứng
tần số quá nhiều.
H = num ./ den: Đây là đáp ứng tần số tổng thể của bộ lọc, được tính bằng cách chia tử
số (num) cho mẫu số (den).
magH = abs(H): Tính toán biên độ của đáp ứng tần số (độ lớn của H).
angH = angle(H): Tính toán pha của đáp ứng tần số.
subplot(2,1,1); plot(w/pi, magH); grid; axis([0, 1, 0, 1]):
 Vẽ đồ thị biên độ.
 w/pi giúp quy đổi trục tần số ra đơn vị π.

 Đáp ứng biên độ được vẽ theo trục tần số chuẩn hóa.


 Đặt các giá trị giới hạn của trục để đồ thị rõ ràng hơn
xlabel('frequency in pi units'); ylabel('|H|'); title('Magnitude Response'): Gán nhãn
cho trục x (tần số) và trục y (biên độ) của đồ thị biên độ, cùng tiêu đề cho đồ thị.
subplot(2,1,2); plot(w/pi, angH/pi); grid:
 Vẽ đồ thị pha.
 angH/pi chia pha cho π để biểu diễn pha trong đơn vị π radian.

xlabel('frequency in pi units'); ylabel('Phase in pi Radians'); title('Phase


Response'): Gán nhãn cho trục x (tần số) và trục y (pha) của đồ thị pha, cùng tiêu đề cho
đồ thị.

14
Magnitude Response
1

|H|

0.5

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
frequency in pi units
Phase Response
0.2
Phase in pi Radians

-0.2

-0.4

-0.6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


frequency in pi units

Code:
b = [1.0, -1.0, 1.0]; % filter coefficient array b
a = [1.0, -0.95, 0.9025]; % filter coefficient array a
m = 0:length(b)-1; l = 0:length(a)-1; % index arrays m
and l
K = 500; k = 0:1:K; % index array k for frequencies
w = pi*k/K; % [0, pi] axis divided into 501 points.
num = b * exp(-j*m'*w); % Numerator calculations
den = a * exp(-j*l'*w); % Denominator calculations
H = num ./ den; % Frequency response
magH = abs(H); angH = angle(H); % mag and phase
responses
subplot(2,1,1); plot(w/pi,magH); grid; axis([0,1,0,1])
xlabel('frequency in pi units'); ylabel('|H|');
title('Magnitude Response');
subplot(2,1,2); plot(w/pi,angH/pi); grid
xlabel('frequency in pi units'); ylabel('Phase in pi
Radians');

15
title('Phase Response');
Giải thích : tương tự câu A
Magnitude Response
1

0.8

0.6
|H|

0.4

0.2

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9


frequency in pi units
Phase Response
0.5
Phase in pi Radians

-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
frequency in pi units

Code:
b = 1.0; % filter coefficient array b
a = [1.0, 0.5, 0.5^2, 0.5^3, 0.5^4, 0.5^5]; % filter
coefficient array a
m = 0:length(b)-1; l = 0:length(a)-1; % index arrays m
and l
K = 500; k = 0:1:K; % index array k for frequencies
w = pi*k/K; % [0, pi] axis divided into 501 points.
num = b * exp(-j*m'*w); % Numerator calculations
den = a * exp(-j*l'*w); % Denominator calculations
H = num ./ den; % Frequency response
magH = abs(H); angH = angle(H); % mag and phase
responses
subplot(2,1,1); plot(w/pi,magH); grid; axis([0,1,0,1])
xlabel('frequency in pi units'); ylabel('|H|');
title('Magnitude Response');
subplot(2,1,2); plot(w/pi,angH/pi); grid

16
xlabel('frequency in pi units'); ylabel('Phase in pi
Radians');
title('Phase Response');

giải thích giống câu A


Magnitude Response
1
|H|

0.5

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
frequency in pi units
Phase Response
0.2
Phase in pi Radians

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
frequency in pi units

P3.18

1. 1.
1. x(n)=5+10(−1)n
% P0318a:y(n)= sum_{m=0}^{3}x(n-2m)-sum_{l=1}^{3}
(0.81)^ly(n-2l)

17
% x(n)= 5+10(-1)^ n;
clc;
close all;
set(0,'defaultfigurepaperposition',[0,0,6,3]);
n =[0:50];
a= [1 0 0.81^2 0 0.81^4 0 0.81^6];
b=[1 0 1 0 1 0 1];
w =[0 pi];
A= [5 10];
theta= [0 0];
[H]=freqresp(b,a,w);
magH = abs(H);
phaH = angle(H);
mag = A.*magH;
pha = phaH + theta;
term1 = w'*n;
term2 = pha'*ones(1,length(n));
cos_term = cos(term1+term2);
y1= mag*cos_term;
x =5+10*(-1).^n;
y2=filter(b,a,x);
Hf_1=figure;
set(Hf_1,'NumberTitle','off','Name','P0318a');
subplot(2,1,1);
Hs = stem(n,y1,'filled');
axis([-1 51 -10 30]);
set(Hs,'markersize',2);
xlabel('n','FontSize',8);
ylabel('y(n)','FontSize',8);
title('Steady state response y_{ss}(n)for x(n) = 5+10(-
1)^{n}','FontSize',8);
ytick= [-10:5:25];
set(gca,'YTick',ytick);
subplot(2,1,2);
Hs = stem(n,y2,'filled');
axis([-1 51 -10 30]);
set(Hs,'markersize',2);
xlabel('n','FontSize',8);
ylabel('y(n)','FontSize',8);
title(['Output response y(n) using the filter function
for x(n)=''5+10(-1)^{n}'],'FontSize',8);
set(gca,'YTick',ytick);

18
Steady state response y ss(n)for x(n) = 5+10(-1) n

25
20
15
y(n)

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

Output response y(n) using the filter function for x(n)='5+10(-1) n

25
20
15
y(n)

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

3. x(n)=2sin(πn/4)+3cos(3πn/4)
clc;
close all;
set(0,'defaultfigurepaperposition',[0,0,6,3]);
n =[0:50];
a= [1 0 0.81^2 0 0.81^4 0 0.81^6];
b=[1 0 1 0 1 0 1];
w =[pi/4 3*pi/4];
A =[23];
theta= [-pi/2 0];
[H]=freqresp(b,a,w);
magH=abs(H); phaH=angle(H); mag= A.*magH; pha=
phaH+theta;
term1=w'*n; term2=pha'*ones(1,length(n)); cos_term=
cos(term1+term2);
y1= mag*cos_term;x
=2*sin(pi*n/4)+3*cos(3*pi*n/4);y2=filter(b,a,x);

19
Hf_1=figure;
set(Hf_1,'NumberTitle','off','Name','P0318c');subplot(2,
1,1);
Hs= stem(n,y1,'filled');axis([-1 51 -3 4]);
set(Hs,'markersize',2);
xlabel('n','FontSize',8); ylabel('y(n)','FontSize',8);
title(['SSresponsey_{ss}(n):x(n)=
2sin({\pi}n/4)+3cos(3\pin/4)'],'FontSize',8);
subplot(2,1,2);Hs= stem(n,y2,'filled');axis([-1 51 -3
4]);

set(Hs,'markersize',2);xlabel('n','FontSize',8);ylabel('
y(n)',...
'FontSize',8);
title(['Output response y(n) using the filter
function'],'FontSize',8);

SSresponsey ss(n):x(n)= 2sin( n/4)+3cos(3 n/4)


4

1
y(n)

-1

-2

-3
0 5 10 15 20 25 30 35 40 45 50
n

Output response y(n) using the filter function


4

1
y(n)

-1

-2

-3
0 5 10 15 20 25 30 35 40 45 50
n

P2.1
1.
% P0201a: Tín hi?u r?i r?c x1(n)
clc; close all;

% ??nh ngh?a kích th??c phông ch?


LFS = 12; % Font size cho nhãn tr?c
TFS = 14; % Font size cho tiêu ??

% T?o tín hi?u r?i r?c

20
x1 = 3*impseq(-2,-5,15) + 2*impseq(0,-5,15) - impseq(3,-
5,15) ...
+ 5*impseq(7,-5,15);

% V? tín hi?u
Hf_1 = figure;
set(Hf_1,'NumberTitle','off','Name','P0201a');
n1 = [-5:15];
Hs = stem(n1,x1,'filled'); set(Hs,'markersize',2);
axis([min(n1)-1,max(n1)+1,min(x1)-1,max(x1)+1]);
xlabel('n','FontSize',LFS);
ylabel('x_1(n)','FontSize',LFS);
title('Sequence x_1(n)','FontSize',TFS);
set(gca,'XTickMode','manual','XTick',n1,'FontSize',8);

% L?u ?? th? d??i d?ng EPS


print -deps2 ../EPSFILES/P0201a;

% ??nh ngh?a hàm impseq


function [x, n] = impseq(n0, n1, n2)
n = [n1:n2];
x = (n == n0);
end

21
Sequence x1(n)
6

3
x 1(n)

-1

-2
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
n

3. x3(n) = 10u(n) − 5u(n − 5) − 10u(n − 10) + 5u(n − 15).


% Clear workspace and close all figures
clc; clear; close all;

% Define the range for n


n = 0:20;

% Define the sequence x3(n) using the unit step function


x3 = 10*stepseq(0, 0, 20) - 5*stepseq(5, 0, 20) ...
- 10*stepseq(10, 0, 20) + 5*stepseq(15, 0, 20);

% Plot the sequence using stem


figure;
stem(n, x3, 'filled', 'LineWidth', 1.5);
xlabel('n', 'FontSize', 12);
ylabel('x_3(n)', 'FontSize', 12);
title('Sequence x_3(n)', 'FontSize', 14);
grid on;
axis([min(n)-1, max(n)+1, min(x3)-1, max(x3)+2]);

% Define the unit step function as a local function

22
function u = stepseq(n0, n1, n2)
% Generate a unit step sequence u(n - n0) for n1 <=
n <= n2
n = n1:n2;
u = (n >= n0);
end
Sequence x3(n)
12

10

4
x3(n)

-2

-4

-6
0 2 4 6 8 10 12 14 16 18 20
n
5.
% Clear workspace and close all figures
clc; clear; close all;

% Define the range for n


n5 = -200:200;

% Generate the sequence x5(n)


x5 = 5 * (cos(0.49 * pi * n5) + cos(0.51 * pi * n5));

% Plot the sequence using stem


figure('NumberTitle', 'off', 'Name', 'P0201e');
stem(n5, x5, 'filled', 'LineWidth', 1.5);
xlabel('n', 'FontSize', 12); % Label for x-axis
ylabel('x_5(n)', 'FontSize', 12); % Label for y-axis

23
title('Sequence x_5(n)', 'FontSize', 14); % Title of the
plot

% Set axis limits


axis([min(n5)-10, max(n5)+10, min(x5)-2, max(x5)+2]);

% Customize ticks for x-axis and y-axis


ntick = n5(1):40:n5(end); % Major ticks for n every 40
steps
ytick = [-12, -10:5:10, 12]; % Custom ticks for y
set(gca, 'XTickMode', 'manual', 'XTick', ntick,
'FontSize', 10);
set(gca, 'YTickMode', 'manual', 'YTick', ytick,
'FontSize', 10);

% Enable grid for better visualization


grid on;

% Save the plot as EPS files


print -deps2 '../CHAP2_EPSFILES/P0201e';
print -deps2 '../../Latex/P0201e';
Sequence x5 (n)
12

10

5
x 5 (n)

-5

-10

-12
-200 -160 -120 -80 -40 0 40 80 120 160 200
n
P2.19

24
y(n) − 0.5y(n − 1) + 0.25y(n − 2) = x(n) + 2x(n − 1) + x(n − 3)
1.
% Problem: Compute and plot the impulse response of the
given LTI system
clc; clear; close all;

% Define the coefficients of the system


b = [1 2 0 1]; % Coefficients of x(n) (Numerator)
a = [1 -0.5 0.25]; % Coefficients of y(n) (Denominator)

% Generate the impulse signal


n = 0:100; % Time index from 0 to 100
delta = (n == 0); % Impulse signal: delta(n)

% Compute the impulse response using the filter function


h = filter(b, a, delta);

% Plot the impulse response


figure('NumberTitle', 'off', 'Name', 'Impulse
Response');
stem(n, h, 'filled', 'LineWidth', 1.5); % Discrete-time
stem plot
xlabel('n', 'FontSize', 12); % Label for x-axis
ylabel('h(n)', 'FontSize', 12); % Label for y-axis
title('Impulse Response of the System', 'FontSize', 14);
% Title of the plot
grid on; % Add a grid for better readability
axis([0 100 min(h)-0.1 max(h)+0.1]); % Adjust axis
limits

25
Impulse Response of the System
3

2.5

1.5
h(n)

0.5

0 20 40 60 80 100
n
2. Clearly from Figure 2.33 the system is stable.
3. % P0219c: Output response of a system using the filter
function.
clc; close all; % Clear command window and close all
figures.

% Define system coefficients


b = [1 2 0 1]; % Coefficients for the numerator (input
signal response)
a = [1 -0.5 0.25]; % Coefficients for the denominator
(output signal response)

% Define the time index n and the input signal x(n)


n = 0:200; % Time index from n = 0 to 200
x = 5*ones(size(n)) + 3*cos(0.2*pi*n) + 4*sin(0.6*pi*n);
% Input signal x(n)

% Compute the output response y(n) using the filter


function
y = filter(b, a, x); % Apply the system filter to the
input signal

26
% Create a figure to plot the response
Hf_1 = figure;
set(Hf_1, 'NumberTitle', 'off', 'Name', 'P0219c'); % Set
figure properties

% Plot the output response y(n) using stem plot


Hs = stem(n, y, 'filled');
set(Hs, 'markersize', 2); % Set marker size for the stem
plot

% Set axis limits and labels


axis([-10, 210, 0, 50]); % Set x-axis from -10 to 210,
and y-axis from 0 to 50
xlabel('n', 'FontSize', LFS); % Label x-axis
ylabel('y(n)', 'FontSize', LFS); % Label y-axis

% Set the title of the plot


title('Output response', 'FontSize', TFS);

% Save the plot as an EPS file


print -deps2 ../EPSFILES/P0219c.eps;

50

45

40

35

30

25

20

15

10

0
0 20 40 60 80 100 120 140 160 180 200

27
28

You might also like