MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 323

Các bộ cân bằng

292

thực nghiệm sau khi các trọng số của bộ cân bằng đã hội tụ. Có thể sử dụng hàm xcorr để xác
định tương quan chéo giữa ngõ ra bộ điều chế và ngõ ra bộ cân bằng (đánh lệnh help xcorr
cửa sổ lệnh để xem chi tiết về hàm này).
Có hai cách để đưa độ trễ D vào quá trình khảo sát: chèn thêm dữ liệu hoặc cắt bớt dữ liệu.

o Thêm vào tập dữ liệu gốc D ký hiệu ở đoạn cuối. Trước khi so sánh dữ liệu gốc và dữ liệu

thu, bỏ đi D ký hiệu ở phần đầu của dữ liệu thu. Theo cách này, toàn bộ dữ liệu gốc (không
tính phần thêm vào) đều được so sánh với dữ liệu thu.

o Trước khi so sánh, bỏ đi D ký hiệu cuối của dữ liệu gốc và D ký hiệu đầu tiên của dữ liệu

thu. Theo cách này, một số ký hiệu gốc sẽ không được so sánh với dữ liệu thu.
Ví dụ 18-2. Sử dụng bộ cân bằng tuyến tính định khoảng ký hiệu, có 3 trọng số, cập nhật
theo giải thuật LMS chuẩn hoá để cân bằng một tín hiệu BPSK, có xét đến độ trễ của kênh
truyền, dùng phương pháp cắt bớt dữ liệu.

M = 2; % Sử dụng phương pháp điều chế BPSK.

msg = randint(1000,1,M); % Dữ liệu ngẫu nhiên

modmsg = pskmod(msg,M); % Điều chế.

trainlen = 100; % Chiều dài của chuỗi huấn luyện

trainsig = modmsg(1:trainlen); % Chuỗi huấn luyện

% Định nghĩa bộ cân bằng.

eqlin = lineareq(3,normlms(.0005,.0001),pskmod(0:M-1,M));

eqlin.RefTap = 2; % Thiết lập chỉ số tham chiếu là tap trung tâm.

[eqsig,detsym] = equalize(eqlin,modmsg,trainsig); % Cân bằng.

detmsg = pskdemod(detsym,M); % Giải điều chế tin hiệu đã phát hiện.

% Bù lại độ trễ do thiết lập chỉ số tham chiếu.

D = (eqlin.RefTap -1)/eqlin.nSampPerSym;

trunc_detmsg = detmsg(D+1:end); % Loại bỏ D ký hiệu đầu của dữ liệu đã cân

bằng.

trunc_msg = msg(1:end-D); % Bỏ đi D ký hiệu cuối của thông điệp.

% Tính tỷ lệ lỗi, không xét chuỗi huấn luyện.

[numerrs,ber] = biterr(trunc_msg(trainlen+1:end),...

trunc_detmsg(trainlen+1:end))

Kết quả xuất ra như sau:

numerrs =

0

ber =

0

ƒ Trong trường hợp dữ liệu vào được chia thành nhiều vector liên tiếp nhau (ví dụ như trong
các quá trình lặp vòng), ta phải sử dụng hàm equalize nhiều lần, lưu lại trạng thái nội của bộ
cân bằng để chuẩn bị cho lần thực hiện kế tiếp. Nói cách khác, các giá trị cuối của các thuộc
tính

WeightInputs

Weights

sau một vòng lặp cũng chính là giá trị khởi đầu trong vòng

lặp kế tiếp. Có hai khả năng có thể xảy ra: sử dụng cùng một bộ cân bằng trong các vòng lặp
khác nhau, hoặc thay đổi bộ cân bằng sau mỗi vòng lặp. Sau đây là quy trình sử dụng bộ cân
bằng trong các vòng lặp ứng với hai khả năng nêu trên:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.