📄 qpsk_constellation.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% QPSK Constellation under Rayleigh Fading Channel
%
%
%2006.11.31
%by robbie.Zhou
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%%%%%
clear;
echo off;
sr=10; % Symbol rate
ml=2; % ml:Number of modulation levels
br=sr .* ml; % Bit rate
nd=2300; % Number of symbols that simulates in each loop
ebn0=25; % Eb/N0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Rayleigh Fading Channel %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data1=rand(1,nd*ml)>0.5;
%Data mapping
paradata2=data1.*2-1;
k=0;
for jj=1:nd
isi = zeros(1,1);
isq = zeros(1,1);
isi = isi + paradata2((1:1),1+k);
isq = isq + paradata2((1:1),2+k);
iout((1:1),jj)=isi;
qout((1:1),jj)=isq;
k=k+2;
end;
ich=iout;
qch=qout;
spow=sum(ich.*ich+qch.*qch)/nd;
attn=0.5*spow*sr/br*10.^(-ebn0/10);
attn=sqrt(attn);
%***************************** Fading channel ******************************
noise_i=raylrnd(0.7,1,length(ich));
noise_q=raylrnd(0.7,1,length(qch));
ifade=ich(1:length(ich)).*noise_i;
qfade=qch(1:length(qch)).*noise_q;
%********************* Add White Gaussian Noise **********************
noise_w=randn(1,length(ifade)).*attn;
noise_w=randn(1,length(qfade)).*attn;
ich1=noise_w+ifade(1:length(ifade));
qch1=noise_w+qfade(1:length(qfade));
%**************************** QPSK Demodulation *****************************
demodata=zeros(1,ml*nd);
demodata((1:1),(1:ml:ml*nd-1))=ich1((1:1),(1:nd))>=0;
demodata((1:1),(2:ml:ml*nd))=qch1((1:1),(1:nd))>=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Caculation ends %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Constellation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% constellation
ss2=ich1+j*qch1;
%Signal Constellation under Rayleigh fading channel
plot(ss2,'green.');
grid on;
hold on;
%Signal Constellation before Rayleigh fading channel
ss=ich+j*qch;
plot(ss,'black*');
xlabel('I-channel');
ylabel('Q-channel');
legend('Signal under Rayleigh fading channel','Signal Constellation');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -