Professional Documents
Culture Documents
Lớp :20DTDJA1
www.hutech.edu.vn
TRANG 1|🢖 THỰC HÀNH XỬ LÝ TÍN HIỆU SỐ
Ấn bản 2019
TRANG 1 > THỰC HÀNH XỬ LÝ TÍN HIỆU SỐ
MỤC LỤC
MỤC LỤC 1
BÀI 1: CƠ SỞ VỀ MATLAB 2
BÀI 3: SYMBOLIC 12
BÀI 4: SIMULINK 16
BÀI 4: SIMULINK 2
BÀI 1: CƠ SỞ VỀ MATLAB
Bài 1.1 Cho ma trận A = [2 7 9 7; 3 1 5 6; 8 1 2 5], giải thích kết quả của các lệnh sau:
a. A'
>> A'
ans =
2 3 8
7 1 1
9 5 2
7 6 5
b. A(:,[1 4])
ans =
2 7
3 6
8 5
ans =
5 3
2 8
d. reshape(A,2,6)
3 BÀI 4: SIMULINK
ans =
2 8 1 9 2 6
3 7 1 5 7 5
e. A(:)
ans =
f. [A;A(end,:)]
ans =
2 7 9 7
3 1 5 6
8 1 2 5
8 1 2 5
BÀI 4: SIMULINK 4
g. A(1:3,:)
ans =
2 7 9 7
3 1 5 6
8 1 2 5
h. [A ; A(1:2,:)]
ans =
2 7 9 7
3 1 5 6
8 1 2 5
2 7 9 7
3 1 5 6
i. sum(A)
ans =
13 9 16 18
j. sum(A')
ans =
25 15 16
ans =
2 7 9 7 25
5 BÀI 4: SIMULINK
3 1 5 6 15
8 1 2 5 16
13 9 16 18 56
Bài 1.2 Cho ma trận A = [2 4 1; 6 7 2; 3 5 9], các lệnh cần thiết để:
ans =
2 4 1
B=
6 7 2
3 5 9
c. Tính tổng các phần tử trên các cột của A. (gợi ý: tính tổng các phần tử trên cột 1:
sum(A(:,1))).
sum(A(:,1))
ans =
11
sum(A(1,:))
ans =
7
BÀI 4: SIMULINK 6
x1 + 2x2 + x3 + 2x4 = 1
Mã lệnh:
B= [0; 1; 2; 10];
x=inv(A)*B
X = b*inv(A)
Kết quả:
x = 1.5814
-1.6279
0.8605
0.9070
Mã lệnh:
A=
10 -2
7 BÀI 4: SIMULINK
20 4
3 6
B=
3 1
-10 2
0 5
C=
-3 4
6 1
>> x=(A+B)*C
x=
-45 51
6 46
57 23
BÀI 4: SIMULINK 8
>> y=A*C+B*C
y=
-45 51
6 46
57 23
>> D=x-y
D=
0 0
0 0
0 0
Kết quả:
>> x=(A+B)*C
x=
-45 51
6 46
57 23
>> y=A*C+B*C
9 BÀI 4: SIMULINK
y=
-45 51
6 46
57 23
>> D=x-y
D=
0 0
0 0
0 0
Bài 1.5 Cho vector x = [3 1 5 7 9 2 6], giải thích kết quả của các lệnh sau:
a. x(3)
>> x(3)
ans =
b. x(1:7)
>> x(1:7)
BÀI 4: SIMULINK 10
ans =
3 1 5 7 9 2 6
c. x(1:end)
>> x(1:end)
ans =
3 1 5 7 9 2 6
d. x(1:end-1)
>> x(1:end-1)
ans =
3 1 5 7 9 2
e. x(6:-2:1)
lấy các phần tử trong khoảng từ phần tử thứ 6 đến 1, vị trí phần tử sau bằng vị trí phần tử
trước cộng với -2
>> x(6:-2:1)
ans =
11 BÀI 4: SIMULINK
2 7 1
f. x([1 6 2 1 1])
ans =
3 2 1 3 3
g. sum(x)
>> sum(x)
ans =
33
Bài 1.6 Tạo một vector x có 100 phần tử, sao cho: x(n) = (-1) n+1/(2n+1) với n = 0 –
99.
Mã lệnh:
Bài 1.7 Cho phương trình ax2+bx+c=0, giải phương trình dùng hàm roots.
Mã lệnh:
Hoặc:
BÀI 4: SIMULINK 12
>> x=roots(m)
Kết quả:
x=
2.0000 + 1.0000i
2.0000 - 1.0000i
Bài 1.8 Giải phương trình x3- 2x2+4x+5=0. Kiểm chứng kết quả thu được bằng hàm
polyval. Sinh viên có nhận xét gì về kết quả kiểm chứng.
Mã lệnh:
>> m=[1 -2 4 5]
>> x=roots(m)
Kết quả:
x = 1.4004 + 2.0693i
1.4004 - 2.0693i
-0.8009 + 0.0000i
Kiểm chứng:
>> polyval(m,1.4004+j*2.0693)
ans =
1.6847e-04 - 5.0079e-04i
>> polyval(m,1.4004-j*2.0693)
ans =
1.6847e-04 + 5.0079e-04i
>> polyval(m,-0.8009)
ans =
13 BÀI 4: SIMULINK
-2.1156e-04
Nhận xét:
Kết quả ra là số lẻ nên khi thử lại nghiệm bằng hàm polyval kết quả không bằng 0.
Bài 1.9 Lặp lại bài 1.8 cho phương trình x7-2=0.
Mã lệnh:
m = 1 0 0 0 0 0 0 -2
>> x=roots(m)
Kết quả:
x = -0.9948 + 0.4790i
-0.9948 - 0.4790i
-0.2457 + 1.0764i
-0.2457 - 1.0764i
1.1041 + 0.0000i
0.6884 + 0.8632i
0.6884 - 0.8632i
Bài 1.10 Thực hiện đoạn chương trình và ghi nhận kết quả.
Kết quả:
>> t = [0:pi/100:2*pi];
>> y = sin(t);
>> plot(t,y);
>> grid on
BÀI 4: SIMULINK 14
Bài 1.11 Thực hiện đoạn chương trình và ghi nhận kết quả.
Kết quả:
>>plot(x,y,'..rs','LineWidth',2,'MarkerEdgecolor','k',...'MarkerFaceColor','g','MarkerSize'
,10)
Bài 1.12 Thực hiện đoạn chương trình và ghi nhận kết quả.
Kết quả:
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> grid on
Bài 1.13 Thực hiện đoạn chương trình và ghi nhận kết quả.
Kết quả:
>>subplot(2,3,5
>>x=linspace(0,2*pi);
>>y1=sin(x);
>>y2=cos(x)
>>y3=2*exp(-x).*sin(x);
>>x1=linspace(-2*pi,2*pi);
>>y4=sinc(x1);
>>subplot(221);
>>plot(x,y1);
>>title(‘Ham y = sinx’);
>>subplot(222);>>plot(x,y2);
>>title(‘Ham y = cosx’);
>>subplot(223);
>>plot(x,y3);
>>title(‘Ham y = 2e^{-x}sinx’);
>>subplot(224);
>>plot(x1,y4);
BÀI 4: SIMULINK 16
Bài 1.14 Thực hiện đoạn chương trình và ghi nhận kết quả.
Kết quả:
>>x = -pi:.1:pi;
>>y = sin(x);
>>plot(x,y)
>>xlabel(ʹt = 0 to 2\piʹ,ʹFontsizeʹ,16)
>>ylabel(ʹsin(t)ʹ,ʹFontsizeʹ,16)
>>text(3*pi/4,sin(3*pi/4),ʹ\leftarrowsin(t)=0.707ʹ,ʹFontSizeʹ,12)
>>t = 0:900;
>>plot(t,0.25*exp(‐0.005*t))
>>text(300,.25*exp(.005*300),... ’\bullet\leftarrow\fontname{times}0.25{\
ite}^(0.005{\itt}} at,...{\itt}=300’,ʹFontSize’,14)
17 BÀI 4: SIMULINK
Bài 1.15 Thực hiện ghi các công thức toán học.
Mã lệnh:
>>text('position',[.2 .5], 'fontsize',14, 'interpreter', 'latex', 'string', ['$$\hbox {magic(3) is } \left( {\matrix{ 8 &
1 & 6 \cr 3 & 5 & 7 \cr 4 & 9 & 2 } } \right)$$']);
>> text('position',[.2 .3], 'fontsize', 14, 'interpreter', 'latex', 'string', ['$$\left[ {\matrix{\cos(\phi) & -\sin(\phi) \
cr \sin(\phi) & \cos(\phi) \cr}} \right] \left[ \matrix{x \cr y} \right]$$']);
>> text('position',[.2 .1], 'fontsize',14, 'interpreter', 'latex', 'string', ['$$L\{f(t)\} \equiv F(s) = \int_0^\infty\!\!
{e^{-st}f(t)dt}$$']);
>> text('position',[.5 .5], 'fontsize',14, 'interpreter', 'latex', 'string', '$$e = \sum_{k=0}^\infty {1 \over {k!} } $
$');
>> text('position',[.5 .3], 'fontsize',14, 'interpreter', 'latex', 'string', ['$$m \ddot y = -m g + C_D \cdot {1 \over
2}\rho {\dot y}^2 \cdot A$$']);
>> text('position',[.5 .1], 'fontsize',14, 'interpreter', 'latex', 'string', '$$\int_{0}^{\infty} x^2 e^{-x^2} dx = \
frac{\sqrt{\pi}}{4}$$');
Bài 1.16 Thực hiện đoạn chương trình và ghi nhận kết quả.
Mã lệnh:
>> z = sin(r)./r;
>> mesh(z)
BÀI 4: SIMULINK 18
Bài 1.17 Vẽ đồ thị hàm số y1=sinx.cos2x và hàm số y2=sinx 2 trong [0-2π], trên cùng
hệ trục tọa độ:
Kết quả:
>> x=0:0.01:2*pi;
>> y1=sin(x).*cos(2*x);
>> plot(x,y1)
>> grid on
>> hold on
>> y2=sin(x.^2);
>> plot(x,y2,'k')
>> xlabel('Time')
>> ylabel('Amplitude')
>> legend('sinx.cos2x','sinx^2')
19 BÀI 4: SIMULINK
Bài 1.18 Dùng các hàm semilogx, semilogy, loglog thay thế cho plot.
Mã lệnh:
>> theta=0:0.05:2*pi;
>> r=sin(5*theta);
>> polar(theta,r)
Kết quả:
e− x
Bài 1.19 Thực hiện như trên cho hàm số y = −x
2e +2
Mã lệnh:
>> x=0:0.01:2*pi;
y1=(exp(-x)/(2*exp(-x)+2));
plot(x,y1)
Kết quả:
BÀI 4: SIMULINK 20
>> theta=0:0.05:2*pi;
>> r=sin(5*theta);
>> polar(theta,r)
Kết quả:
Mã lệnh:
>> theta=0:0.05:2*pi;
>> r=2*sin(theta)+3*cos(theta);
>> polar(theta,r)
21 BÀI 4: SIMULINK
Kết quả:
Mã lệnh:
>> theta=0:0.05:2*pi
>> r=sort(10./(2*(cos(theta)).^2+(sin(theta)).^2))
>> polar(theta,r)
Kết quả:
>> t=0:pi/50:10*pi;
>> x=sin(t);
>> y=cos(t);
>> z=t;
BÀI 4: SIMULINK 22
>> grid on
>> grid on
Kết quả:
>> t=-5:0.1:5;
>> [x,y]=meshgrid(t);
>> z=x.^2+y.^2;
>> title('mesh(z)')
>> title('meshc(z)')
>> title('meshz(z)')
>> title('waterfall(z)')
23 BÀI 4: SIMULINK
Kết quả:
sin ( √ ❑ )
Bài 1.25 Vẽ mặt z= dùng hàm surf và mesh.
❑
Mã lệnh:
Surf:
>> t=-8:0.5:8;
>> [x,y]=meshgrid(t);
>> z=(sin(sort(x.^2+y.^2)))./(2*(sort(x.^2+y.^2)))
>> title('mesh(z)')
>> title('meshc(z)')
>> title('meshz(z)')
>> title('waterfall(z)')
Mesh:
>> t=-8:0.5:8;
>> [x,y]=meshgrid(t);
BÀI 4: SIMULINK 24
>> z=sin(sort(x.^2+y.^2))./(2*(sort(x.^2+y.^2)))
>> surf(x,y,z,'FaceColor','interp','EdgeColor','none');
Kết quả:
Bài 1.26 Thực hiện đoạn chương trình và ghi nhận kết quả.
>>edit f = [1 1]; i = 1;
end plot(f)
Kết quả:
25 BÀI 4: SIMULINK
Bài 1.27 Thực hiện đoạn chương trình và ghi nhận kết quả.
Mã lệnh:
>>edit function y = tb(x) %Tinh tri trung binh cua cac phan tu [m,n] = size(x);
if m == 1 m = n; end y = sum(x)/m;
Bài 1.28 Kiểm tra kết quả hàm gptb2 để giải phương trình bậc hai ax2+bx+c=0.
>>[x1,x2]=gptb2(1,6,-7)
Kết quả:
>>[x1,x2]=gptb2(2,7,14)
Kết quả:
>>[x1,x2]=gptb2(0,4,3)
Kết quả:
>>[x1,x2]=gptb2(1,6)
Kết quả:
function [x1,x2]=gptb2(a,b,c) % Giai phuong trinh bac hai ax^2+bx+c=0 % [x1,x2]=gptb2(a,b,c) % Trong do:
x1,x2 la nghiem % a, b, c la 3 he so cua phuong trinh if nargin<3 error('Error! Nhap 3 he so cua phuong trinh')
elseif a==0 x1=-c/b; x2=[];
x1 = (-b+sqrt(delta))/(2*a);
BÀI 4: SIMULINK 26
x2 = (-b-sqrt(delta))/(2*a); end
>>[x1,x2]=gptb2(1,6,-7)
>>[x1,x2]=gptb2(0,4,3)
>>[x1,x2]=gptb2(1,6)
Kết quả: Error using gptb2 (line 7) Error! Nhap 3 he so cua phuong trinh
Kết quả:
>>vdcongdb(1,5,’ Astroit’)
Kết quả:
>>vdcongdb(1,5,’Xoanoc’)
Kết quả:
>> vdcongdb(1,5,’saikieu’)
Kết quả:
>> vdcongdb(5,’becnulli’)
Kết quả:
27 BÀI 4: SIMULINK
Bài 1.30 Hàm dudoan() để dự đoán kết quả sau mỗi lần tung một xúc xắc đồng nhất,
6 mặt.
Mã lệnh :
function dudoan()
% Du doan ket qua sau moi lan tung ngau nhien mot xuc
xac 6 mat % Chuong trinh lap lai cho den khi nguoi su
kqua=tungxx;
if (doan ~= kqua)
sai=sai+1;
dung=dung+1;
end
end
mat=floor(6*rand(1,1))+1;
% end
Kết luận về sự khác nhau giữa script file và hàm không có tham số vào.
H
BÀI 4: SIMULINK 28
Bài 1.31 Viết function xuất ra màn hình bảng cửu chương.
Mã lệnh:
Kết quả:
Bài 1.32 Viết function giaimach(E1,E2,J,R1,R2,C,R3) xuất ra công suất trên E1, E2,
J; dòng điện trên R3.
Viết script md1 nhập các giá trị E1, E2, J, R1, R2, C, R3; dùng function giaimach để
tính và xuất ra các giá trị công suất trên E1, E2, J; dòng điện trên R3.
Mã lệnh:
Kết quả:
29 BÀI 4: SIMULINK
Mã lệnh
% --- Executes on button press in pushbuttonConvert.
function pushbuttonConvert_Callback(hObject, eventdata, handles)
doF = str2num(get(handles.editDoF,'String'));
if get(handles.radiobuttonC,'Value') == 1
% Chuyen oC
set(handles.editKQ,'String',num2str((doF-32)*5/9));
elseif get(handles.radiobuttonR,'Value') == 1
%Chuyen oR
set(handles.editKQ,'String',doF+459.7);
else
%Chuyen oK
set(handles.editKQ,'String',(doF-32)*5/9+273.15);
end
set(handles.radiobuttonK,'Value',0);
set(handles.radiobuttonR,'Value',0);
set(handles.text2,'String','Celcius degree');
set(handles.radiobuttonR,'Value',0);
set(handles.radiobuttonC,'Value',0);
set(handles.text2,'String','Kelvin degree');
set(handles.radiobuttonC,'Value',0);
set(handles.radiobuttonK,'Value',0);
set(handles.text2,'String','Rankine degree');
31 BÀI 4: SIMULINK
Kết quả:
40 oF = 4.4444 0C
40 oF = 499.7 0R
40 oF = 277.594 K
BÀI 4: SIMULINK 32
Mã lệnh:
Kết quả:
n = 4, 2D:
n = 4, 3D:
Mã lệnh:
Kết quả:
Bien do = 4:
Mã lệnh:
Kết quả:
BÀI 4: SIMULINK 34
Giao diện:
Mã lệnh:
Kết quả:
35 BÀI 4: SIMULINK
BÀI 3: SYMBOLIC
Bài 3.1 Dùng hàm diff để xác định đạo hàm của một hàm số.
>> syms x
>> y=diff(x^3+3*x^2+2*x-1)
Kết quả:
y =
3*x^2 + 6*x + 2
y= (1−x ) e x +2 x
Mã lệnh:
>> syms x
>> y=diff(exp(x^2+2*x),2)
Kết quả:
y=
>> y=int(sin(x)-2)
BÀI 4: SIMULINK 36
Kết quả:
y=
- 2*x - cos(x)
1 2 2
x (2 x +1)
Bài 3.4 Tính tích phân: y=∫ 3
dx
−1 5( x + 3)
Mã lệnh:
>> y=int(x^2*(2*x^2+1)/(5*(x^3+3)),-1,1)
Kết quả:
y=
>> eval(y)
ans =
0.1024
Bài 3.5 Dùng hàm finverse để tìm hàm ngược.
>> finverse(3*x+2)
Kết quả:
ans =
x/3 - 2/3
>> y=diff(sin(x^3))
y=
3*x^2*cos(x^3)
Kết quả:
Mã lệnh:
>> ezsurf('x/(2*x^2+y^2)')
Kết quả:
BÀI 4: SIMULINK 38
Bài 3.9 Dùng hàm solve giải phương trình và hệ phương trình.
Kết quả:
0.1028 - 0.6655i ans =
-2.2056 + 0.0000i
0.1028 + 0.6655i
>> y=solve(exp(x)==x)
Kết quả:
y=
-lambertw(0, -1)
>> syms x y
>> [x,y]=solve(x^2*sin(x^2)-y==7,x-y==2)
Kết quả:
39 BÀI 4: SIMULINK
x=
-5.0132041491753126897135846656655
y=
-7.0132041491753126897135846656655
Bài 3.12 Dùng hàm dsolve giải phương trình và hệ phương trình vi phân.
z’ = 3z+4y
y’ = -4z+3y’
z(0) = 0, y(0) = 1
Kết quả:
>> syms x y
>> y=dsolve('Dy=y*tan(x)+cos(x)',x)
y=
>> y = simplify(y)
y=
>> pretty(y)
4 C5 + 2 x + sin(2 x)
>> syms x y
y=
BÀI 4: SIMULINK 40
Bài 3.14 Giải phương trình y’’ - 3y’ + 2y = 3x +5sin2x với điều kiện đầu y(0) = 1 và
y’(0) = 1.
Mã lệnh:
>> syms x y
y=
Mã lệnh:
Kết quả:
Bài 3.16 Giải phương trình với ngõ vào F(t) là hàm bước.
Mã lệnh:
Kết quả:
41 BÀI 4: SIMULINK
{m1 x'1' =−b 1 ( x '1−x '2 ) −K 1 ( x 1−x 2 ) +u m2 x '2' =b1 ( x '1−x '2 ) + K 1 ( x1 −x2 ) + b2 ( w' −x '2 ) + K 2 ( w−x 2 )−u
Mã lệnh:
Kết quả:
BÀI 4: SIMULINK 42
BÀI 4: SIMULINK
Bài 4.1 Tính và vẽ DTFT có dạng:
Kết quả:
Sơ đồ khối:
43 BÀI 4: SIMULINK
Kết quả:
Sơ đồ khối:
• Khối Algebric Constraint trong thư viện Math để giải phương trình
BÀI 4: SIMULINK 44
• Khối Display trong thư viện Sink để hiển thị trị số của nghiệm
Kết quả:
Sơ đồ khối:
• Khối Algebric Constraint trong thư viện Math để giải phương trình
• Khối Display trong thư viện Sink để hiển thị trị số của nghiệm
Kết quả:
-0,382
Sơ đồ khối:
Kết quả:
BÀI 4: SIMULINK 46
Kết quả:
Kết quả:
47 BÀI 4: SIMULINK
Bài 4.8
Sơ đồ khối:
Kết quả:
Bài 4.9
Sơ đồ khối:
Kết quả:
TRANG 48
BÁO CÁO THỰC HÀNH TIN HỌC KỸ THUẬT