You are on page 1of 5

Câu 1 :

x= randi([0 1],1,16);

k=4;

xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');

%Điều chế số 16-QAM%

M = 16;

y = qammod(xsym,M);

% Giải điều chế sử dụng phương pháp 16-QAM%

zsym = qamdemod(y,M);

% Chuyển đổi ngược từ các ký hiệu thành chuỗi bit nhị phân%

z = de2bi(zsym,'left-msb'); % Chuyển các số nguyên thành các số nhị phân 4 bit

% Đổi ma trận z thành một vector

z = reshape(z.',prod(size(z)),1);

% Thiết lập các thông số

fd = 50; % Tốc độ ký hiệu

fc = 10*fd; % Tần số sóng mang

fs = 10*fc; % Tần số lấy mẫu

len = length(y)*fs/fd; % Số mẫu của tín hiệu y

Yreal = real(y);%Tín hiệu Y1(t) là phần thực của tín hiệu điều chế băng gốc y

Yimag = imag(y);% Tín hiệu Y2(t) là phần ảo của tín hiệu điều chế băng gốc y
% Khởi tạo vector tín hiệu

y1 = [];

y2 = [];

xtmp=[];

ztmp=[];

for k=1:length(y) % Xét từng chu kỳ ký hiệu

sigx=xsym(k,1)*ones(1,100); % Tạo 100 mẫu giá trị bằng x

sig1=Yreal(k,1)*ones(1,100); % Tạo 100 mẫu giá trị bằng Yreal

sig2=Yimag(k,1)*ones(1,100); % Tạo 100 mẫu giá trị bằng Yimag

sigz=zsym(k,1)*ones(1,100); % Tạo 100 mẫu giá trị bằng z

y1=[y1 sig1];

y2=[y2 sig2];

xtmp = [xtmp sigx];

ztmp = [ztmp sigz];

end

time = 0:(1/fs):(len-1)/fs; % Vector thời gian

ymod = y1.*cos(2*pi*fc*time)-y2.*sin(2*pi*fc*time); % Tín hiệu sau điều chế

figure;

subplot(3,1,1); plot(time,xtmp); % Vẽ tín hiệu trước khi điều chế.

title('Tin hieu goc');

subplot(3,1,2); plot(time,ymod); % Vẽ tín hiệu sau khi điều chế.

title('Tin hieu sau khi dieu che');

subplot(3,1,3); plot(time,ztmp); % Vẽ tín hiệu sau khi giải điều chế.

title('Tin hieu sau khi giai dieu che');


Câu 2 :

c = rayleighchan(1/10000,100); % Khởi tạo đối tượng kênh truyền

sig = j*ones(2000,1); % Tín hiệu phát

y = filter(c,sig); % Đưa tín hiệu qua kênh truyền.

% Tạo một đối tượng mô tả kênh truyền Rayleigh .

chan = rayleighchan(1/10000,100);

% Tạo chuỗi dữ liệu phát

M = 32; % Số mức của điều chế QAM

k = log2(M);

n = 3e4;

nsamp = 1;

% Nguồn tín hiệu

% Tạo chuỗi dữ liệu nhị phân ngẫu nhiên dưới dạng vector cột.

x = randi([0 1],96000,1); % Chuỗi bit nhị phẫnngâu nhiên

% Chuyển đổi các bit thành các ký hiệu k bit.

xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');

% Điều chế 32-QAM

y = qammod(xsym,M);

% Tín hiệu phát

ytx = y;
% Kênh truyền

% Truyền tín hiệu qua kênh truyền AWGN.

EbNo = 10; % Đơn vị dB

snr = EbNo + 10*log10(k) - 10*log10(nsamp);

ynoisy = awgn(ytx,snr,'measured');

% Tín hiệu thu

yrx = ynoisy;

% Giải điều chế

zsym = qamdemod(yrx,M);

% Chuyển đổi ngược từ các ký hiệu thành chuỗi bit nhị phân.

z = de2bi(zsym,'left-msb');

z = reshape(z.',prod(size(z)),1);

[number_of_errors,bit_error_rate] = biterr(x,z)

You might also like