Professional Documents
Culture Documents
Một phương pháp khác để có được thông tin về một hệ thống là đo đạc các trạng
thái của hệ thống tại các thời điểm khác nhau. Sau đó dùng phương pháp nội suy
để tính toán một cách gần đúng về mô hình hệ thống
Độ chính xác của hệ thống lúc này sẽ phụ thuộc vào tần số trích mẫu và phương
pháp nội suy mà ta sử dụng
Số Lệnh Ý nghĩa
TT
1 >>interp1(X,Y,Xi,‘phuong phap noi suy‘) Nội suy 1 chiều
2 >>interp2(X,Y,Z,Xi,‘phuong phap noi suy‘) Nội suy 2 chiều
3 >>interp3(X,Y,Z,V,Xi,‘phuong phap noi Nội suy 3 chiều
suy‘)
Với lệnh nội suy 1 chiều, X và Y là một cặp vector chỉ ra giá trị đo được của đối
tượng cần nội suy. Xi là giá trị mà tại đó ta cần tính toán giá trị nội suy. X phải là
một vector đơn điệu tăng. Tương tự với nội suy 2 chiều, Z sẽ là giá trị của đối
tượng đo được ở trạng thái (X,Y). X,y phải là một vector đơn điệu tăng. Với nội
suy 3 chiều, V sẽ là giá trị của trạng thái (X,Y,Z). X,Y,Z phải là các vector đơn
điệu tăng
Phương pháp nội suy
BỘ MÔN KỸ THUẬT ĐIỆN TỬ
ĐẠI HỌC GTVT HN Page | 72
CHƯƠNG 5: XỬ LÝ TÍN HIỆU TRONG MATLAB
Ví dụ 5.1.1
Lệnh trên cửa sổ Command Ý nghĩa
>> X=1:10; - Khai báo các tọa độ
>> Y=sin(x)+5*cos(x); X và giá trị đo được
>> Xi=1:0.1:10; tại các điểm đó(giả
>>Yi=interp1(X,Y,Xi,'cubic'); sử là một hàm số)
>> plot(X,Y,'o'); - Khai báo các điểm
>> hold on; Xi mà ta cần tính nội
>> plot(Xi,Yi,'r--') suy
5 - Tính giá trị Yi
4 - Vẽ các điểm đo được
3 là các dấu ’o‘
2 - Vẽ tập hợp các điểm
1 nội suy
0
-1
-2
-3
-4
-5
1 2 3 4 5 6 7 8 9 10
Trong thực tế, không phải lúc nào ta cũng có được một bộ số liệu đầy đủ và chuẩn
xác, đơn điệu tại các trạng thái khác nhau, đặc biệt là đối với số liệu nhiều chiều.
Để nội suy dữ liệu này, ta sử dụng lệnh griddata
Lệnh Ý nghĩa
>>Zi=griddata(X,Y,Z,Xi,Yi,‘phương pháp‘ Xử lý dữ liệu không đơn
điệu
Ví dụ 5.1.2
Lệnh trên cửa sổ Command Ý nghĩa
>> x=rand(50,1); - Khai báo các tọa độ
>> y=rand(50,1); X,Y và giá trị đo được
>> z=5*(x.^1)+3*(y.^1); Z tại các điểm đó(giả
>>[Xi,Yi]=meshgrid(0:0.1:1.5,0:0.1:1.5); sử là một hàm số)
>> Zi=griddata(x,y,z,Xi,Yi); - Khai báo các điểm
>> mesh(Xi,Yi,Zi) Xi,Yi mà ta cần tính
>> hold on nội suy
>> plot3(x,y,z,'o')
- Tính giá trị Zi nội suy
được
- Vẽ các điểm đo được là
8
các dấu ’o‘
6
- Vẽ tập hợp các điểm
4 nội suy
2
0
1.5
1.5
1
1
0.5
0.5
0 0
h(t )e
jt
H ( j ) dt
Trong thực tế, không phải lúc nào ta cũng có thể có được tín hiệu h(t) liên tục để
thực hiện biến đổi Fourier liên tục. Ta chỉ có thể có được tín hiệu rời rạc của h(t) là
h(nT). Chính vì thế mà ta cũng có phép biến đổi Fourier rời rạc
N 1
H d (k ) 2h(nT )e
Phép biến đổi Fourier rời rạc chỉ được định nghĩa cho tần số gián đoạn ωk = k.Δω.
jk
Trong đó Δω được gọi là độ phân giải tần số
n0 .Tần số tối đa có thể đo
NT
F max F 1
được là .
Số
2 2T
Các lệnh liên quan tới biến đổi Fourier rời rạc
Lệnh Ý nghĩa
TT
1 fft(x) Biến đổi Forier rời rạc 1 chiều của tín hiệu x
2 ifft(X) Biến đổi Forier rời rạc ngược 1 chiều của tín
hiệu X
3 fft2(x) Biến đổi Forier rời rạc 2 chiều của tín hiệu x
4 ifft2(X) Biến đổi Forier rời rạc ngược 2 chiều của tín
hiệu X
Ví dụ 5.2.1
Kết quả
4 2
1.8
3
1.6
2
1.4
1
1.2
0 1
0.8
-1
0.6
-2
0.4
-3
0.2
-4 0
0 0.5 1 0 20 40 60
TT ví dụ 5.2
- Phép biến đổi Fourier rời rạc chỉ tính toán được các điểm tần số là bội số của
Δω. Những điểm tần số khác với bội số của Δω không được xét tới. Chính vì
thế mà chúng ta không khảo sát được đặc điểm tín hiệu tại các điểm này –
hiện tượng dò tần số. Nhược điểm này có thể được khắc phục bằng cách tăng
điểm trích mẫu hoặc giảm giá trị Δω. Nhưng việc này cũng gặp hạn chế bởi
độ ảnh hưởng của tín hiệu tạp âm sẽ tăng lên
- Với một tín hiệu có chu kỳ, việc tính phổ bằng cách tính toán trong toàn thời
gian tồn tại của tín hiệu tỏ ra không hiệu quả. Thực tế ta chỉ cần tính toán
trong 1 chu kỳ là đủ
Khắc phục các vấn đề trên
Nguyên tắc của phương pháp này là chia tín hiệu ra thành từng chuỗi nhỏ, tính phổ
của từng chuỗi đó rồi tính trung bình
Ưu điểm của nó là loại bỏ được phần nào hiện tượng dò tần số, do đó có khả năng
lọc nhiễu ồn trắng tốt
Ví dụ 5.2.2
Kết quả
tin hieu can phan tich Tin hieu pho trung binh Tin hieu pho thong thuong
8 2 2
1.8 1.8
6
1.6 1.6
4
1.4 1.4
2
1.2 1.2
0 1 1
0.8 0.8
-2
0.6 0.6
-4
0.4 0.4
-6
0.2 0.2
-8 0 0
0 5 10 0 50 0 50
Nhận xét: tín hiệu được xử lý theo phương pháp phân tích phổ thông thường có
phổ tần số có các giá trị tại nhiều điểm tần số, đặc tính phổ được xử lý theo phương
pháp tính trung bình có đặc tính mịn hơn, chính xác hơn, loại bỏ được phần nào
nhiễu tạp âm
Ngoài lệnh hamming, matlab còn cung cấp một số các lệnh cửa sổ khác là
bartlett, blackmann, boxcar, hann cũng được thực hiện tương tự
lệnh hamming
Ví dụ 5.2.3
Lệnh trong M-file
t=0.01:0.1:5;pi=3.14;
x=8*sin(15*pi*t)+4*cos(30*pi*t);
T=diff(t(1:2));
N=length(x);
f=[0:(N-1)/2]/(N*T);
H=fft(hamming(N)'.*x);
H=[H(1) 2*H(2:N/2)]/N;
figure;
subplot(131);
grid on;
plot(t,x);
title('tin hieu can phan tich');
subplot(132);
plot(f,abs(H),'o');
title('Tin hieu pho hamming');
subplot(133);
H1=fft(x);
H1=[H1(1) 2*H1(2:N/2)]/N;
plot(f,abs(H1),'o')
title('Tin hieu pho binh thuong');
Kết quả
tin hieu can phan tich Tin hieu pho hamming Tin hieu pho binh thuong
6 4 6
4 3.5
5
2
3
0 4
2.5
-2
2 3
-4
1.5
-6 2
1
-8
1
-10 0.5
-12 0 0
0 5 0 5 0 5
N
1
xy (k ) 1 N x(n k
Hàm tự tương quan là hàm tương quan của một tín hiệu duy nhất
Ví dụ 5.3.1
n 1 x ( n k
xx (k ) N
Trong tàu ngầm hải quân, để kiểm tra khoảng cách giữa tầu với mặt đất phía dưới,
N n 1
tàu phát ra một tín hiệu hướng xuống đất theo một chu kỳ nhất định. Tín hiệu thu
được là một hỗn hợp bao gồm tín hiệu đã phát và tiếng vọng của nó. Tính được độ
trễ giữa tín hiệu gốc và tiếng vọng sẽ giúp tàu tính được khoảng cách giữa tàu và
mặt đất
Chương trình trong M-file
Kết quả
-2
-4
-6
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
1.5
0.5
-0.5
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Ví dụ 5.3.2
Hai tầu ngầm cùng di chuyển trong một khu vực. Cả 2 tàu ngầm đó cùng sử dụng
một dạng tín hiệu để nhận biết nhau và để tính toán khoảng cách giữa 2 tầu để cùng
phối hợp di chuyển (giả sử 2 tín hiệu này là đồng bộ với nhau). Để thực hiện công
việc đó, cả 2 tầu đều thu tín hiệu mà nó nhận được từ môi trường và so sánh tín
hiệu đó với tín hiệu mẫu sẵn có. Kết quả thu được sẽ cho ta biết khoảng trễ mà tín
hiệu lan truyền từ tầu này sang tàu kia
tiengvong(di:N)=0.5*x(1:N-di+1);
X=x+tiengvong;
%-------Tính tương quan của tín hiệu X nhận được với tín hiệu mẫu---
cxx=xcorr(X,x,'biased');
%-------Vẽ đồ thị-----
subplot(211);
plot(t,x);
grid on;
subplot(212);
plot(t,cxx(N:2*N-1))
grid on
-2
-4
-6
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
0.5
-0.5
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
5.4. Bộ lọc
Khái niệm
Bộ lọc số có tác dụng làm tăng thêm hoặc giảm bớt một dải tần số nhất định của tín
hiệu
1
1 y ( z ) y 1
H ( z ) H ( z )
Bộ lọc FIR
1
x( z ) x
B=fir1( N,Wn,fstyle,window)
Lệnh tạo bộ Các thuộc tính của bộ lọc
lọc
N : bậc của bộ lọc
Wn : Vector tần số cắt
2
b1 b2 z b1 b bz z 1
Fstyle : Các dạng của bộ lọc
Mặc định : Lọc thông thấp tại tần số cắt Wn
3 2
`high` : Lọc thông cao
`stop` : Lọc chặn dải Wn = [W1 W2]
`DC-1´ : Dải tần số đầu tiên là dải thông trong chuỗi tần số
a1 aa z
Wn = [W1 W2 W3 .... Wn]
`DC-0´ : Dải tần số đầu tiên là dải bị chặn trong chuỗi tần số
Wn = [W1 W2 W3 .... Wn]
21
Window : Các hàm cửa sổ sử dụng trong bộ lọc bao gồm : barthannwin,
bartlett, blackman, blackmanharris, bohmanwin, chebwin,
flattopwin, gausswin, hamming, hann, kaiser,
nuttallwin, parzenwin, taylorwin, triang, tukeywin
Ví dụ .4.1
Lệnh trong M-file Chú thích
B=fir1(30,0.3);
- Tạo bộ lọc B và bộ lọc có cửa
Bw=fir1(30,0.3,chebwin(length(B)));
[H,F]=freqz(B,1,300,100); sổ Bw
[Hw,Fw]=freqz(Bw,1,300,100); - Tìm các hàm truyền tương
subplot(121);
plot(F,abs(H),'r-',Fw,abs(Hw),'g--' ứng của nó
); - Vẽ đặc tính của 2 bộ lọc B và
legend('bo loc FIR','loc FIR + cua Bw
so chebwin');
title('dac tinh bo loc');
grid on; - Tạo tín hiệu thử nghiệm lọc
BỘ MÔN KỸ THUẬT ĐIỆN TỬ
ĐẠI HỌC GTVT HN Page | 85
CHƯƠNG 5: XỬ LÝ TÍN HIỆU TRONG MATLAB
subplot(122);
t=0:0.1:10;
x=sin(t)+0.5*cos(20*t); - Lọc bằng 2 phương pháp có
x_f=filter(B,1,x);
x_ff=filtfilt(Bw,1,x); trễ và không trễ
plot(t,x,'g-',t,x_f,'r-',t,x_ff,'b-
');
legend('tin hieu truoc loc','loc - Vẽ dạng tín hiệu trước và sau
filter','loc filtfilt');
title('tin hieu truoc va sau khi
khi lọc
loc');
grid on;
Kết quả
dac tinh bo loc tin hieu truoc va sau khi loc
1.4 1.5
bo loc FIR tin hieu truoc loc
loc FIR + cua so chebwin loc filter
loc filtfilt
1.2
1
1
0.5
0.8
0.6
-0.5
0.4
-1
0.2
0 -1.5
0 10 20 30 40 50 0 2 4 6 8 10
Bộ lọc IIR
Khởi tạo bộ lọc
Số Cấu trúc lệnh Ý nghĩa
TT
1 Butter(N,Wn,fstyle,window) Khởi tạo bộ lọc Butterworth
2 Cheby1(N,R,Wn,fstyle,window) Khởi tạo bộ lọc Tschebycheff
dạng 1
3 Cheby2(N,R,Wn,fstyle,window) Khởi tạo bộ lọc Tschebycheff
dạng 2
4 ellip(N,Rp,Rs,Wn,fstyle,window) Khởi tạo bộ lọc Elliptic
Các tham số N, Wn, fstyle, window giống như khởi tạo bộ lọc fir. Tham số R là độ
mất mô của bộ lọc. Tương tự như vậy là các tham số Rp và Rs là độ mấp mô tăng
và giảm của bộ lọc thông dải
Ví dụ 5.4.2
Lệnh trong M-file Chú thích
[B,A]=butter(4,0.4);%0.4= 20/50 --->
- Tạo bộ lọc Butter lọc tại tần
tan so 20Hz
t=0:0.01:0.5;pi=3.14; số 20Hz và hàm truyền của
x=5+20*sin(2*pi*10*t) nó
+15*cos(2*pi*70*t);
x_f=filter(B,A,x); - Tạo tín hiệu thử nghiệm lọc
x_ff=filtfilt(B,A,x);
plot(t,x,'g-',t,x_f,'r-',t,x_ff,'b-'
); - Lọc bằng 2 phương pháp có
legend('tin hieu ban dau','loc IIR trễ và không trễ
filter','loc IIR liftlift');
title('tin hieu truoc va sau khi
loc');
grid on; - Vẽ dạng tín hiệu trước và
sau khi lọc
Kết quả
tin hieu truoc va sau khi loc
40
tin hieu ban dau
loc IIR filter
loc IIR liftlift
30
20
10
-10
-20
-30
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5