Khi thuật toán LMS tìm lỗi để tối thiểu hóa, nó chỉ nghĩ đến giá trị lỗi hiện tại, còn
trong thuật toán RLS, mọi lỗi được xem là lỗi toàn cục từ lúc bắt đầu đến điểm dữ
liệu hiện thời. Thuật toán RLS dựa trên việc bắt đầu với giải pháp tối ưu và sau khi
dùng mỗi mẫu vào để cập nhật đáp ứng xung nhằm duy trì quá trình tối ưu hóa. Số
bước cần thiết và trực tiếp được định nghĩa qua mỗi mẫu thời gian. Điều này có
nghĩa là thuật toán RLS sử dụng những thông tin từ tất cả các mẫu đầu vào quá khứ
để ước lượng ma trận tự tương quan của vector dữ liệu đầu vào. Để giảm ảnh
hưởng của các mẫu đầu vào từ quá khứ cách xa, ta sử dụng yếu tố trọng số để đánh
giá sự ảnh hưởng của mỗi mẫu.
11 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1609 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Báo cáo Khử nhiễu kênh thoại trên DSP, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 1
Báo cáo đồ án:KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
---------------------------------------------------------------------------------
PHẦN I:
RECUSIVE LEAST-SQUARES ALGORITHM
1.Lí thuyết về thuật toán RLS (Recursive least squares algorithm):
Thuật toán Recusive Least-Squares( RLS) được xem như trường hợp đặc biệt của
bộ lọc Kalman. Thuật toán RLS là một công cụ quan trọng cho việc xác định các hệ
số của bộ lọc thích nghi tuyến tính. Thuật toán RLS tăng độ phức tạp, số lượng các
phép toán, và độ tin cậy. Do đó, RLS đưa ra độ hội tụ nhanh hơn và lỗi ít hơn,
nhưng đổi lại yêu cầu phí tổn cho nhiều sự tính toán hơn.
Khi thuật toán LMS tìm lỗi để tối thiểu hóa, nó chỉ nghĩ đến giá trị lỗi hiện tại, còn
trong thuật toán RLS, mọi lỗi được xem là lỗi toàn cục từ lúc bắt đầu đến điểm dữ
liệu hiện thời. Thuật toán RLS dựa trên việc bắt đầu với giải pháp tối ưu và sau khi
dùng mỗi mẫu vào để cập nhật đáp ứng xung nhằm duy trì quá trình tối ưu hóa. Số
bước cần thiết và trực tiếp được định nghĩa qua mỗi mẫu thời gian. Điều này có
nghĩa là thuật toán RLS sử dụng những thông tin từ tất cả các mẫu đầu vào quá khứ
để ước lượng ma trận tự tương quan của vector dữ liệu đầu vào. Để giảm ảnh
hưởng của các mẫu đầu vào từ quá khứ cách xa, ta sử dụng yếu tố trọng số để đánh
giá sự ảnh hưởng của mỗi mẫu.
Trọng số này được thể hiện trong hàm chi phí sau đây:
( ) ∑ ( ) ( )
Trong đó, e(i) là sự khác biệt giữa tín hiệu mong muốn d(i) so với tín hiệu ngõ ra
y(i), được tạo thành từ tập tín hiệu ngõ vào (tại thời điểm i) u(i),u(i-1),… u(i-M+1)
e(i) = d(i) – y(i) = d(i) –wH(n)u(i) ,
u(i) là tập vector ngõ vào của tín hiệu tại thời điểm i,
u(i) = [u(i),u(i-1),…,u(i-M+1)]T.
w(n) là tập vector trọng số tại thời điểm n,
w(n) = [w0(n),w1(1),…, wM-1(n)]
T
.
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 2
Giản đồ cập nhật trọng số:
u(i) u(i-1) ……. u(i-M+2) u(i-M+1)
..…..
……. y(i)
Hệ số trọng số ( ) có giá trị 0 < ( ) .
Một hình thức đặc biệt của vector trọng số thường được sử dụng là trọng số mũ
( )
Vì vậy hàm chi phí được biểu diễn lại như sau:
( ) ∑ ( )
Ma trận tự tương quan ( ) được biểu diễn : ( ) ∑ ( ) ( )
Vector tương quan chéo Z(n) giữa tập tín hiệu đầu vào và tín hiệu ngõ ra mong
muốn tương ứng được biểu diễn là:
z(n) = ∑ ( ) ( )
2. Các bước thực hiện thuật toán RLS:
a) Khởi tạo thông số thuật toán RLS:
Để ứng dụng thuật toán RLS ta phải khởi tạo vòng lặp đệ qui bằng cách chọn giá trị
bắt đầu P(0) sao cho không có điểm kì dị trên ma trận tương quan ( ). Ta có thể
làm được điều này bằng cách lấy nghịch đảo của nó.
( ) ∑ ( ) ( ) ]
-1
Với vector u(i) có được từ một khối ban đầu của dữ liệu từ .
Ma trận tương quan được viết là:
( ) ∑ ( ) ( )
,với I là ma trận đơn vị m x m.
hằng số vị trí nhỏ
Z
-1
Z
-1
𝑤 0*(n) 𝑤 M-2*(n)
Σ
Z
-1
Z
-1
𝑤 1*(n) 𝑤 M-1*(n)
Σ Σ
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 3
Với n = 0, ta có ( )
Giá trị khởi tạo P(n) chính là nghịch đảo của ma trận tương quan, ta được:
P(0) = .
Trong thời gian khởi tạo, hàm u(n) được viết
( ) , n = - M +1
u(n)=
0 , n<0, n
Giá trị khởi tạo của vector trọng số được thiết lập (0) = 0
Việc tính toán cực tiểu hàm chi phí :
( ) ( )
( ) ∑ ( )
Mỗi trạng thời gian thái tức thì được cập nhật, n = 1,2,...
k(n) =
( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
P(n) = ( ) ( ) ( ) ( ).
b) Cập nhật đệ qui cho tổng trọng số lỗi:
Giá trị nhỏ nhất của tổng trọng số lỗi, ( ) ,được tính :
( ) ( )
( ) ( )
Trong đó, ( ) được tính
( ) ∑
( )
2
= ( ) |d(n)|
2
( ) ( )
( ) ( )
( ) ( ) ( ) ( ) ( ) ( ) ( )
Dùng vector độ lợi k(n) để thể hiện :
( ) ( ) ( ) ( ) ( ) = ( ) ( ) Hu(n) = ( ) ( )
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 4
Ta rút gọn lại được:
( ) ( ) ( )
( ) ( ) ( ) ( )
= ( )
( ) ( ) ( ) ( )
= ( )
( ) ( ) ,với e(n) là lỗi dự đoán tiếp theo.
Vì đây là những giá trị thực, ta có ( ) ( ) ( ) ( ).
Hệ số chuyển đổi
Ta có e(n) = d(n) –[ ( ) ( ) ( )]Hu(n)
=d(n)- ( ) ( ) ( ) ( ) ( )
=( 1 ( ) ( )) ( )
Hệ số chuyển đổi ( )
( )
( )
( ) ( )
Hệ số chuyển đổi ( ) được xác định duy nhất bởi vector độ lợi k(n) và vector dữ
liệu vào.
Sơ đồ thuật toán:
Primary signal d(n) + output ( )
_
Referency signal u(n)
Bảng cập nhật: k(n)=[
( ) ( )
] ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
̂ ( ) ̂ ( ) ( )
Với ̂ ( ) là dự đoán của biến lỗi. ̂ ( ) ( )
Σ
𝑤 (𝑛 )
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 5
c. Phân tích sự hội tụ của thuật toán RLS:
Với ( ) ( ) .
Thuật toán RLS tính toán chính xác bằng phương pháp Least-Squares cho n .
Khi ta có thể viết ( ) ( ) ( ), n
( ) ∑ ( ) ( )
z(n) = ∑ ( ) ( )
d(n) = e0(n)+ w0
H
u(n) , e0l ỗi phép đo
w0 là vector tham số hồi qui
Z(n) = ( ) ∑ ( )
( )
( )
( )∑ ( )
( )
Lấy kì vọng ( ):
E[( ( )
( )∑ ( )
( )
= w0+ E[
( )∑ ( )
( ) ( ) , i=1,2,...n
Ta thấy
+ Ma trận tương quan ( ) được xác định duy nhất bởi trình tự của các vector
ngõ vào u(1), u(2),...u(n)
+ Lỗi đo lường e0(i) độc lập với vector ngõ vào u(i).
+ Lỗi đo lường e(i) có giá trị 0.
Vì vậy, ta viết được : E[( ( ) , n
Nhận xét: Sự hội tụ của thuật toán RLS có nghĩa khi n . Không giống LMS, sự
hội tụ của RLS đạt được mà không cần n .
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 6
PHẦN II:
MÔ PHỎNG THUẬT TOÁN RLS BẰNG SIMULINK
1.Sơ đồ khối bộ lọc:
Mô hình cập nhật hệ số bên trong khối RLS Filter:
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 7
Mô hình chi tiết hoạt động của bộ lọc:
Tóm gọn trên lại ta được khối hàm mathlab:
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 8
2. Kết quả mô phỏng trên Mathlab:
a) Chương trình: khử nhiễu cho tín hiệu âm bị nhiễu chứa trong file
signalnoise.wav và nhiễu mẫu chứa trong file noise.wav
clear all
clc
% khởi tạo tiếng nói cộng nhiễu
[xinit,Fs,nbits] = wavread('signalnoise.wav');
xinit = xinit';
xn = xinit(1,:); % khử tín hiệu âm cộng nhiễu
n = wavread('noise.wav'); % đọc nhiễu
n = n';
n = n(1,:); %lấy nhiễu
N=length(n); %chiều dài nhiễu
M=32;
Lamda=0.98;
Ns = length(xn); %chiều dài âm cộng nhiễu
d = 0.002*ones(1,N);
x1 = 10*n+d;
w=zeros(1,M);
x=zeros(1,M);
u=zeros(1,N); %u=x(n)*T(n-1)*x(n)'
T=200*eye(M); %T(-1)
k=zeros(M,1); %k(n)
e=zeros(1,N); %e(n|n-1)
e1=e; %bình phương lỗi
w1 = zeros(1,Ns-M+1);
for n=M:N
x=x1(n:-1:n-M+1); %x(n)
u(n)=x*T*x';
k=T*x'/(L+u(n)); %tính k(n)
e(n)=d(n)-x*w'; %tính e(n|n-1)
w=w+k'*e(n); %tính w(n)
w1(N-n+1)=w(1);
T=(T-x*k*T)/L; %tính T(n)
e1(n)=e(n)*e(n);
end
%tính hệ số sử dụng bộ lọc
s = zeros(1,Ns-M+1);
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page 9
for n=M:Ns
s(n-M+1) = 0;
for j=1:M
s(n-M+1)= s(n-M+1)+w(j)*xn(n-j+1);
end
end
subplot(2,1,1); % vẽ tín hiệu âm bi nhiễu ban đầu
plot(xn);
title(tin hieu bi nhieu);
subplot(2,1,2); % vẽ tín hiệu lọc được
plot(s,'k');
title('ket qua loc nhieu');
wavwrite(s,Fs,nbits,'filter.wav');
wavwrite(5*s,Fs,nbits,'filter5.wav');
Kết quả nhận được:
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page
10
Phân tích phổ tần số:
clear all
clc
[xn,Fsy,bitsy] = wavread('signalnoise.wav');
y_single=xn(:,1)';
X=fft(y_single');
Mag=abs(X);
f=(0:length(X)-1)*Fsy/length(X);
subplot(3,1,1);
plot(f,Mag)
xlabel('f(Hz)');
ylabel('·dB');
title('pho tin hieu bi nhieu');
[n,Fsy,bitsy] = wavread('noise');
n_single=n(:,1)';
X=fft(n_single');
Mag=abs(X);
f=(0:length(X)-1)*Fsy/length(X);
subplot(3,1,2);
plot(f,Mag,'r');
xlabel('f(Hz)');
ylabel('dB');
title('pho nhieu ');
[s,Fsy,bitsy] = wavread('filter');
s_single=s(:,1)';
X=fft(5*s_single');
Mag=abs(X);
f=(0:length(X)-1)*Fsy/length(X);
subplot(3,1,3);
plot(f,Mag)
xlabel('(Hz)');
ylabel('dB');
title('pho tin hieu da loc');
GVHD: PGS.TS Hoàng Đình Chiến
SV: Lâm Quốc Thịnh MSSV: 40702336
SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP
-------------------------------------------------------------------------------------------------------------------------------
Page
11
Kết quả phân tích phổ:
Nhận xét:
- Kết quả thu được từ bộ lọc tốt, nhiễu bị loại bỏ.
- Bộ lọc thích nghi rất tốt trong quá trình khử nhiễu.
Các file đính kèm theo tài liệu này:
- kh7917 nhi7877u trn DSP.pdf