LABEX5
LABEX5
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
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 =
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 =
xtilde2 =
xtilde3 =
xtilde4 =
3
0.4000 + 0.0000i -0.3236 + 0.2351i 0.1236 - 0.3804i 0.1236 +
0.3804i -0.3236 - 0.2351i
xtilde5 =
Columns 1 through 5
Columns 6 through 8
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
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
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
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])
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:
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);
% 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.
9
ii. Phương trình sai phân từ hàm H(z) trê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
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
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ị π.
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
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.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');
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
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);
1
y(n)
-1
-2
-3
0 5 10 15 20 25 30 35 40 45 50
n
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;
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);
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
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;
23
title('Sequence x_5(n)', 'FontSize', 14); % Title of the
plot
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;
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.
26
% Create a figure to plot the response
Hf_1 = figure;
set(Hf_1, 'NumberTitle', 'off', 'Name', 'P0219c'); % Set
figure properties
50
45
40
35
30
25
20
15
10
0
0 20 40 60 80 100 120 140 160 180 200
27
28