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

Các bộ cân bằng

294

eq_current = eqrls; % Sử dụng bộ cân bằng RLS trong lần lặp đầu tiên.

% Vòng lặp chính

for jj = 1:4

msg = randint(500,1,M); % Thông điệp ngẫu nhiên

modmsg = qammod(msg,M); % Điều chế 16-QAM.

% Thiết lập chuỗi huấn luyện cho lần lặp đầu tiên.

if jj == 1

ltr = 200; trainsig = modmsg(1:ltr);

else

% Sử dụng chế độ quyết định sau lần lặp đầu tiên.

ltr = 0; trainsig = [];

end

% Mô phỏng méo kênh truyền

filtmsg = filter(chan,1,modmsg);

% Cân bằng tín hiệu thu.

s = equalize(eq_current,filtmsg,trainsig);

% Vẽ các tín hiệu.

h = scatterplot(filtmsg(ltr+1:end),1,0,'bx'); hold on;

scatterplot(s(ltr+1:end),1,0,'g.',h);

scatterplot(sigconst,1,0,'k*',h);

legend('Tin hieu thu','Tin hieu sau khi can bang','Dang phan bo tin hieu');

title(['Iteration #' num2str(jj) ' (' eq_current.AlgType ')']);

hold off;

% Chuyển từ RLS sang LMS sau lần lặp thứ hai.

if jj == 2

eqlms.WeightInputs = eq_current.WeightInputs; % Copy các ngõ vào cuối vòng

lặp.

eqlms.Weights = eq_current.Weights; % Copy các trọng số ở cuối vòng lặp.

eq_current = eqlms; % Sử dụng bộ cân bằng LMS.

end

end

Ở mỗi vòng lặp, chương trình sẽ thực hiện vẽ đồ thị phân bố của tín hiệu thu, tín hiệu sau khi
cân bằng và phân bố của tín hiệu 16QAM lý tưởng. Ví dụ, hình vẽ dưới mô tả kết quả sau khi
thực hiện vòng lặp thứ tư:

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.