概述
运用MATLAB仿真QPSK信号星座图:
Part 1 不加高斯噪声
星座点在复域内对称地位于一个单位圆上,QPSK复信号矢量可表示为S˜m = e^(jθm) , m = 0, 1, 2, 3 , θm ∈ {π/4 , 3π/4 , 5π/4 , 7π/4 }.
在Matlab中,我们将二进制位序列建模为有限长向量。生成长度为50000的位矢量,然后使用格雷编码的QPSK调制将这些位映射到复信号上。
(注意这里50000指的是五万个点,例如:00, 01,11,10)
使用Matlab函数randi生成二进制位序列“0”和“1”的概率相等。
clc;
clear all;
%%%%%%%%%%%%%%
data=randi([0 1],1,100000); %产生随机的100000个0-1随机数
% 将随机数分为两列
a=reshape(data,50000,2);
a1=a(:,1); %第一列代表实部
b1=a(:,2); %第二列代表虚部
s = a1+b1*i; % 产生50000长度的复信号
q1=0+0*i; %代表 θm=pi/4
q2=0+1*i;%代表 θm=3pi/4
q3=1+1*i;%代表 θm=5pi/4
q4=1+0*i;%代表 θm=7pi/4
sig=zeros(50000,1); % sig 代表原始信号,产生0数组,以备后面存储
for i=1:50000
if (s(i)==q1)
x=sqrt(2)/2; y=sqrt(2)/2; %对应00信号
sig(i)=x+y*1i; %映射后的信号保存到sig数组中
end
if (s(i)==q2)
x=-sqrt(2)/2; y=sqrt(2)/2;%对应01信号
sig(i)=x+y*1i;%映射后的信号保存到sig数组中
end
if (s(i)==q3)
x=-sqrt(2)/2; y=-sqrt(2)/2;%对应11信号
sig(i)=x+y*1i;%映射后的信号保存到sig数组中
end
if (s(i)==q4)
x=sqrt(2)/2; y=-sqrt(2)/2;%对应10信号
sig(i)=x+y*1i;%映射后的信号保存到sig数组中
end
end
figure(1);
plot(real(sig),imag(sig),'o');
title('QPSK modulation with Gray encoding');
当然,不用if判断语句也可以实现,例如:运用数电中学过的‘真值表’来求出映射后的关系,直接写出关系式也可以,方法很多种。
结果:
(后续:第二部分讲解加上高斯噪声后的星座图)
最后
以上就是悦耳绿草为你收集整理的格雷映射星座图讲解及MATLAB实现 part 1的全部内容,希望文章能够帮你解决格雷映射星座图讲解及MATLAB实现 part 1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复