Tải bản đầy đủ (.doc) (36 trang)

Thí nghiệm Tín Hiệu Hệ Thống

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (529.25 KB, 36 trang )

MỤC LỤC:
LAB 1: MATLAB
A: NỘI DUNG LÝ THUYẾT
1.1 Giới thiệu về matlab:
1.2 Toán tử
1.3 Vecto và Ma trận
1.4 Đồ thị và chú thích
1.5 Câu lệnh lựa chọn
1.6 Câu lệnh lựa chọn
B:BÀI TẬP VÀ MÔ PHỎNG
LAB 2:FOURIER SERIES & FOURIER TRTRANSFORMS
A:NỘI DUNG LÝ THUYẾT
1.Chuỗi Fourier
2.Biến đổi fourier
B:BÀI TẬP VÀ MÔ PHỎNG
LAB 3:FILTERING PERIODIC SIGNALS
A:NỘI DUNG LÝ THUYẾT
I. Chuyển tín hiệu sang miền tần số và ngược lại:
II. Bộ lọc thông thấp
III:Bộ lọc thông cao
B:BÀI TẬP VÀ MÔ PHỎNG
1
LAB 1: MATLAB
A: NỘI DUNG LÝ THUYẾT
1.1 Giới thiệu về matlab:
Matlab là phần mềm cung cấp môi trường tính toán số và lập trình, do
công ty MathWorks thiết kế. MATLAB cho phép tính toán số với ma trận,
vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao
diện người dùng và liên kết với những chương trình máy tính viết trên
nhiều ngôn ngữ lập trình khác.
1.2 Toán tử


+ Cộng
– Trừ
* Nhân
/ Chia
^ Mũ
1.3 Vecto và Ma trận
1.3.1 Tạo vecto hàng
>> v = [1 2 3 4]
v =
1 2 3 4
>> v = [1,2,3,4]
v =
1 2 3 4
+Sử dụng Colon:
>> vec = 1:5
vec =
1 2 3 4 5
>> nv = 1:2:9
nv =
1 3 5 7 9
+ Sử dụng linspace: tạo ra một vecto khoảng cách tuyến tính,
2
linspace(x,y,n) tạo ra 1 vecto với n giá trị trong phạm vi bao gồm từ
x đến y.
Ví dụ:
>> ls = linspace(3,15,5)
ls =
3 6 9 12 15
Vecto biến tạo ra bằng cách sử dụng các biến hiện tại.
Ví dụ:

>> newvec = [nv ls]
newvec =
1 3 5 7 9 3 6 9 12 15
1.3.2 Tạo vecto cột
Các số trong một cột cách nhau bở dấu ;
>> c = [1; 2; 3; 4]
c =
1
2
3
4
>> r = 1:3;
>> c = r’
c =
1
2
3
1.3.3 Tạo biến ma trận
>> mat = [4 3 1; 2 5 6]
mat =
4 3 1
2 5 6
>> mat = [2:4; 3:5]
mat =
2 3 4
3 4 5
>> newmat = [2 6 88
33 5 2]
3
newmat =

2 6 88
33 5 2
Ma trận không
zeros(3)
ans =
0 0 0
0 0 0
0 0 0
1.4 Đồ thị và chú thích
Dùng lệnh plot để vẽ đồ thị
Ví dụ :plot(t,y) %vẻ đồ thị hàm y theo thời gian t
Chú thích:
title(' ‘) % Tên đồ thị
xlable(‘ ‘) % Chú thích trên trục x
ylabel(‘ ‘) % Chú thích trên trục y
grid on % Chia ô trên đồ thị
subplot(m,n,p) % Chia vị trí của đồ thị:m là số hàng, n là số cột và
p là vị trí trong cửa sổ.
1.5 Câu lệnh lựa chọn
1.5.1 Biểu thức quan hệ
>,<,>=,<=,==,~=,||,&&,~
1.5.2 Lệnh IF
if condition
action
end
1.5.3 Lệnh IF –ELSE
*if
if condition
action1
else

action2
end
*Switch
switch switch_expression
4
case caseexp1
action1
case caseexp2
action2
case caseexp3
action3
% etc: there can be many of these
otherwise
actionn
end
1.6 Lệnh FOR
for loopvar = range
action
end
B:BÀI TẬP VÀ MÔ PHỎNG
Exercises 1: Create a variable ftemp to store a temperature
in degrees Fahrenheit (F).
Convert this to degrees Celsius and store the result in a
5
variable ctemp. The conversion factor is C = (F – 32) * 5/9.
 Exercises 2: Using the colon operator, create the following
vectors
3 4 5 6
1.0000 1.5000 2.0000 2.5000 3.0000
5 4 3 2

6
 Exercises 3: Using the linspace function, create the following vectors:
4 6 8
–3 –6 –9 –12 –15
9 7 5
7
Exercises 4: Using colon operators for the rows, create the matrix:
7 6 5
3 5 7
 Exercises 5: Plot exp(x) for values of x ranging from –2 to 2 in
steps of 0.1. Put an appropriate title on the plot, and label the axes.
8
 Exercises 6: Plot sin (x) for x values ranging from 0 to (in separate Figure
Windows):
- using 10 points in this range
- using 100 points in this range
Nhận xét:Đồ thị là tập hợp của nhiều điểm,khi ta chọn càng nhiều điểm để vẻ thì
đồ thị sẽ chính xác hơn.
Exercises 7: Whether a storm is a tropical depression, tropical storm, or
hurricane is determined by the average sustained wind speed. In miles per hour, a
storm is a tropical depression if the winds are less than 38 mph. It is a tropical
storm if the winds are between 39 and 73 mph, and it is a hurricane if the wind
speeds are > = 74 mph. Write a script that will prompt the user for the wind speed
of the storm, and will print which type of storm it is.
9
 Exercises 8: Create a 3 × 5 matrix. Perform each of the following two ways:
using built-in functions, and also using loops (with if statements if
necessary):
§ Find the maximum value in each column.
§ Find the maximum value in each row.

§ Find the maximum value in the entire matrix
10
LAB 2:FOURIER SERIES & FOURIER TRTRANSFORMS
A:NỘI DUNG LÝ THUYẾT
1.Chuỗi Fourier :
 Chuỗi Fourier dùng để biểu diễn gần đúng của tín hiệu tuần hoàn trong
miền thời gian.
 Công thức:
11

 Trong đó x
n

được gọi là hệ số Fourier được xác định bởi công thức:

2.Biến đổi fourier
 Biến đổi Fourier dùng để chuyển tín hiệu trong miền thời gian sang miền tần
số.
 X(f) là tín hiệu biểu diễn trên miền tần số của tín hiệu x(t) thì:
X(f)=
Khi đó: x(t) =
Một số lệnh làm việc:
length(): kích thước ma trận, vector
conj: lấy liên hợp phức của một số phức đã cho
abs: vẻ biên độ tín hiệu
angle: vẻ góc pha
12
figure: tên đồ thị
Stem:vẻ tín hiệu rời rạc trong miền tần số
B:BÀI TẬP VÀ MÔ PHỎNG

Bài 1 : Chuyển đổi tín hiệu
sang miền tần số.
Code:
clc;close all;
t=linspace(-5,5,101);
x=zeros(1,length(t));
for k=1:length(t)
if(t(k)>=-1 && t(k)<=0)
x(k)=t(k)+1;
elseif(t(k)>0 && t(k)<=1)
x(k)=1;
else x(k)=0;
end
end
subplot(2,1,1)
plot(t,x)
title('Do thi trong mien thoi gian')
xlabel('t')
ylabel('x1(t)')
X=fft(x);
subplot(2,1,2)
stem(X);
title('Do thi trong mien tan so')
13
xlabel('f')
ylabel('X1(f)')
grid on
kết quả mô phỏng:
Nhận xét:
Tín hiệu trong miền tần số rời rạc,biện độ lớn nhất tập trung vào các tần số (0;5)

và (95,100).Từ khoảng(5;95) biên độ giảm dần về 0.
Bài 2:huyển đổi tín hiệu x(t)=
e
t 2/

sang miền tần số.
Code:
clc;close all;
t=linspace(0,50,50)
x=exp(-t./2);
subplot(2,1,1)
14
plot(t,x)
title('Do thi trong mien thoi gian')
xlabel('t')
ylabel('x(t)')
subplot(2,1,2)
X=fft(x)
stem(X)
title('Do thi trong mien tan so')
xlabel('f')
ylabel('X(f)')
grid on
Kết quả mô phỏng:
Nhận xét:Tính hiệu rời rạc,cách đều nhau .từ (0;25) biện độ tăng dần và
nằm về phần dưới trục f còn từ (25;50)biên độ tăng dần và nằm về phần trên
trục f,tại f=25 thì biên độ của nó bằng 0.
15
Bài 3:chuyển đổi tín hiệu
sang miền tần số.

Code:
clc;close all;
t=linspace(-5,5,101);
x=zeros(1,length(t));
for k=1:length(t)
if(t(k)>=0 && t(k)<=1)
x(k)=t(k);
elseif(t(k)>1 && t(k)<=2)
x(k)=1;
else x(k)=0;
end
end
subplot(2,1,1)
plot(t,x)
title('Do thi trong mien thoi gian')
xlabel('t')
ylabel('x2(t)')
16
X=fft(x);
subplot(2,1,2)
stem(X);
title('Do thi trong mien tan so')
xlabel('f')
ylabel('X2(f)')
grid on
Kết quả mô phỏng:
Bài 4:chuyển đổi tín hiệu
sang miền tần số.
17
Code:

clc;close all;
t=-5:0.1:5
x=zeros(1, length(t))
for k=1:length(t)
if (t(k)>=-3&&t(k)<=3)
x(k)=1;
else x(k)=0;
end
end
subplot(2,1,1)
plot(t,x)
title('do thi trong mien thoi gian')
xlabel('t')
ylabel('x1(t)')
subplot(2,1,2)
X=fft(x)
stem (X)
title('do thi trong mien tan so')
xlabel('f')
ylabel('X1(f)')
grid on
Kết quả mô phỏng:
18
Nhận xét:

Bài 5: chuyển đổi tín hiệu
sang miền tần số.
Code:
clc;close all;
t=-5:0.1:5

x=zeros(1, length(t))
for k=1:length(t)
if (t(k)>=-1&&t(k)<=1)
x(k)=1;
19
else x(k)=0;
end
end
subplot(2,1,1)
plot(t,x)
title('Do thi trong mien thoi gian')
xlabel('t')
ylabel('x2(t)')
subplot(2,1,2)
X=fft(x)
stem (X)
title('Do thi trong mien tan so')
xlabel('f')
ylabel('X2(f)')
grid on
Kết quả mô phỏng:
Nhận xét:
LAB 3:FILTERING PERIODIC SIGNALS
A:NỘI DUNG LÝ THUYẾT
I. Chuyển tín hiệu sang miền tần số và ngược lại:
Để chuyển tín hiệu từ miền thời gian sang miền tần số ta sử dụng phép biến đổi
Fourier.Dưới đây là các lệnh giúp chúng ta thực hiện điều này.
20
Fs:tần số lấy mẫu,Fs=8000Hz
 [x,Fs]=wavread(‘ '); %Tên nguồn tín hiệu vào

 X=fft(x); %Chuyển x(t) sang X(f)
 N=length(x); %Độ dài tín hiệu x(t)
 freq=[-(N/2-1):N/2]*Fs/N; %Khoảng tần số để vẽ
 plot(freq,abs(fftshift(X))); %Đồ thị trong miền f
 sound(x, Fs) %Âm thanh tín hiệu vào
 x=real(ifft(X)) %Chuyển X(f) sang x(t)
II. Bộ lọc thông thấp:
Bộ lọc thông thấp dùng để cho các tần số thấp đi qua và chặn các tần số cao lại:
Bộ lọc thông thấp lý tưởng: là bộ lọc loại bỏ hoàn toàn các tần số bậc cao.
Bộ lọc thông thấp được cho bởi:

Trong đó: α là tần số cắt
Bộ lọc thông thấp có thể được dùng trong Matlap bằng cách sử dụng phép biến đổi
Fourier.
III. Bộ lọc thông cao: dùng để cho các tần số cao đi qua và chặn các tần số
21
thấp lại

Bộ lọc thông cao được cho bởi:
Bộ lọc thông cao lý tưởng là bộ lọc loại bỏ hoàn toàn tín hiệu có tấn số thấp.
Bộ lọc thông cao thực tế thường có giá trị thấp nhưng không bằng 0 với ở tần số
thấp và dần dần tăng độ lớn khi tần số tăng.
Giải thích một số câu lệnh:
w=(-N/2+1:(N/2)); %Chia khoảng tần số
H=a./(a+1i*w); %
Hshift=fftshift(H);
Y=X.*Hshift'; %Lọc tín hiệu
plot(freq,abs(fftshift(Y))); %đồ thị X(f) sau khi qua bộ lọc thông thấp
y = real(ifft(Y)); %Chuyển X(f) sau khi lọc sang miền thời gian
sound(y, Fs) Âm thanh tín hiệu ra

B:BÀI TẬP VÀ MÔ PHỎNG
Exercise1:Thực hiện lọc tín hiệu thông thấp từ file “castanets44m.wav”
với tần số cắt là a=500*2*pi.
Code:
clc;close all;
[x,Fs]=wavread('castanets44m');
22
X=fft(x);
N=length(x);
%pfreq=[0:N/2+1]*Fs/N;
%Xpos=X(1:N/2+1);
freq=[-(N/2-1):N/2]*Fs/N;
subplot(2,1,1);
plot(freq,abs(fftshift(X)));
title('Pho tin hieu truoc khi loc')
xlabel('f')
ylabel('X(f)')
%plot(pfreq,abs(abs(Xpos)));
sound(x, Fs)
a=500*2*pi;
w=(-N/2+1:(N/2)); %centerd requency vector
H=a./(a+1i*w); %centerd version of H
Hshift=fftshift(H);
Y=X.*Hshift';
%Y=H'.*X;
subplot(2,1,2);
plot(freq,abs(fftshift(Y)));
title('Pho tin hieu sau khi loc')
xlabel('f')
ylabel('X(f)')

y = real(ifft(Y));
sound(y, Fs)
23
Nhận xét:
Exercise 2:
1.Tạo một tín hiệu vào x(t) sử dụng lệch: x=repmat([zeros(1,99) 1],1,5);
2.Sử dụng các lệnh ở bài 1 để lọc tín hiệu với tần số cắt là 20.
3.Vẻ 2 tín hiệu x(t) và y(t).
4.Nhận xét,giải thích.
Code:
clc;close all;
x = repmat([zeros(1,99) 1], 1, 5);
Fs=1000;
24
X=fft(x);
N=length(x);
freq=[-(N/2-1):N/2]*Fs/N;
subplot(2,1,1);
plot(freq,abs(fftshift(x)));
title('Tin hieu truoc khi loc')
xlabel('t')
ylabel('x(t)')
sound(x, Fs)
a=20;
w=(-N/2+1:(N/2)); %centerd requency vector
H=a./(a+1i*w); %centerd version of H
Hshift=fftshift(H);
Y=X.*Hshift;
y = real(ifft(Y));
subplot(2,1,2);

plot(freq,abs(fftshift(y)));
title('Tin hieu sau khi loc')
xlabel('t')
ylabel('y(t)')
sound(y, Fs)
Kết quả mô phỏng:
25

×