Các bộ cân bằng
293
o Sử dụng cùng một bộ cân bằng trong các vòng lặp:
1) Trước khi bắt đầu các vòng lặp, khởi tạo bộ cân bằng mà ta cần sử dụng.
2) Thiết lập thuộc tính
ResetBeforeFiltering = 0
để bảo đảm tính liên tục giữa các
lần lặp.
3) Trong mỗi vòng lặp, sử dụng hàm equalize để thực hiện cân bằng.
o Thay đổi bộ cân bằng trong các vòng lặp:
1) Trước khi bắt đầu các vòng lặp, khởi tạo các đối tượng mô tả các bộ cân bằng khác
nhau mà ta sẽ sử dụng trong các vòng lặp. Ví dụ: tạo đối tượng
eqcma
mô tả bộ cân
bằng dùng giải thuật CMA và một đối tượng
eqlms
mô tả bộ cân bằng dùng giải thuật
LMS.
2) Với mỗi đối tượng được tạo ra ở bước 1, thiết lập thuộc tính
ResetBeforeFiltering
bằng 0.
3) Tạo một đối tượng mô tả bộ cân bằng eq_current để chỉ bộ cân bằng được sử dụng
trong các vòng lặp và gán cho nó giá trị là đối tượng mô tả bộ cân bằng cần sử dụng
trong vòng lặp đang xét. Ví dụ: trong vòng lặp đầu tiên, gán
eq_current = eqcma
,
trong vòng lặp thứ hai, gán
eq_current = eqlms
, ...
4) Trong mỗi vòng lặp, thực hiện các bước sau:
a) Sử dụng hàm equalize với đối tượng
eq_current
để thực hiện quá trình cân bằng
b) Copy giá trị của các thuộc tính
WeightInputs
và
Weights
từ đối tượng
eq_current
sang đối tượng mà chúng ta sẽ sử dụng trong vòng lặp kế. Ví dụ:
eqlms.WeightInputs = eq_current.WeightInputs;
eqlms.Weights = eq_current.Weights;
c) Định nghĩa lại đối tượng
eq_current
để chỉ đến đối tượng mô tả bộ cân bằng sẽ sử
dụng trong vòng lặp kế tiếp. Như vậy,
eq_current
sẽ mô tả một bộ cân bằng mới
nhưng vẫn duy trì các trạng thái cũ và các trọng số cũ.
Ví dụ 18-3. Sử dụng bộ cân bằng tuyến tính để cân bằng một tín hiệu 16QAM, tín hiệu vào
được tách thành ba chuỗi dữ liệu nối tiếp nhau. Đầu tiên, sử dụng giải thuật RLS, sau lần lặp
thứ hai, chuyển sang giải thuật LMS.
% Thiết lập các thông sồ.
M = 16; % Tập ký hiệu của pp điều chế
sigconst = qammod(0:M-1,M); % Dạng phân bố của tín hiệu 16-QAM
chan = [1 0.45 0.3+0.2i]; % Các hệ số của kênh truyền
% Thiết lập các bộ cân bằng.
eqrls = lineareq(6, rls(0.99,0.1));% Khởi tạo một đối tượng mô tả bộ cân bằng
RLS.
eqrls.SigConst = sigconst; % Mô tả tín hiệu.
eqrls.ResetBeforeFiltering = 0; % Duy trì sự liên tục giữa các lần lặp.
eqlms = lineareq(6, lms(0.003)); % Khởi tạo một đối tượng mô tả bộ cân bằng
LMS.
eqlms.SigConst = sigconst; % Mô tả tín hiệu.
eqlms.ResetBeforeFiltering = 0; % Duy trì sự liên tục giữa các lần lặp.