%16QAM系统的调制、解调的仿真,信源为单极性不归零码(NRZ)

clear all  %清空工作空间的变量

close all  %关闭所有图形窗口

global dt df t f N T %定义全局变量

k=13;

N=2^k;    %总的取样点数

L=32;                %L为每个码元的取样点数

M=N/L;                %M码元总数

Rb=3;                %码元速率Rb=2Mb/s

Ts=1/Rb;                %码元宽度Ts

dt=Ts/L;        %时域取样间隔

df=1/(N*dt);%频域取样间隔

T=N*dt;     %时间截断长度

Bs=N*df/2;  %带宽

Na=4;      %示波器扫描宽度

alpha=0.5;   %升余弦滚降系数

t=linspace(-T/2,T/2,N); %频域横坐标

f=linspace(-Bs,Bs,N)+eps;%时域横坐标

%升余弦

hr1=sin(pi*t/Ts)./(pi*t/Ts);

hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);

hr=hr1.*hr2;

HR=abs(t2f(hr));

GT=sqrt(HR);

GR=GT;

figure(1)

set(1,'Position',[10,250,500,400])

%设定窗口位置及大小

figure(2)

set(2,'Position',[515,250,500,400])

%设定窗口位置及大小

figure(3)

set(3,'Position',[50,10,500,200])

%设定窗口位置及大小

figure(4)

set(4,'Position',[600,10,400,300])

%设定窗口位置及大小

A=1;

fc=1/Ts;

m=A*cos(2*pi*fc*t);     % 载波

n=-A*sin(2*pi*fc*t);

EP=zeros(size(f));     %输入信号功率谱

EPa=zeros(size(f));    %调制后信号功率谱

EPo=zeros(size(f));     %输出信号功率谱

for loop1=1:15    %误码率曲线

Eb_N0(loop1)=2*(loop1-1);  %Eb/N0 in dB

eb_n0(loop1)=10^(Eb_N0(loop1)/10);

Eb=0.5;

n0=Eb/(eb_n0(loop1)); %信道的噪声谱密度

sita=n0*Bs; %信道中噪声功率

n_err=0;     %误码计数

for loop2=1:5

a=round(rand(1,M));   %产生随机码

for i0=1:L;

s(i0+[0:M-1]*L)=a;   %将输出信号变成单极性不归零码

end

S=t2f(s);

P=S.*conj(S)/Ts;

EP=(EP*(loop1-1)+P)/loop1; %输入信号功率谱

i=zeros(1,M/2);         %串并转换

q=zeros(1,M/2);

I=zeros(1,N);         %串并转换

Q=zeros(1,N);

i=a(1:2:M-1);

q=a(2:2:M);

ii=zeros(1,M/4);         %串并转换

qq=zeros(1,M/4);

yii=zeros(1,M/2);         %串并转换

yqq=zeros(1,M/2);

y=zeros(1,M);

for l1=1:2:(M/2-1);

if i(l1)-i(l1+1)==1,

ii((l1+1)/2)=1;

elseif  i(l1)-i(l1+1)==-1

ii((l1+1)/2)=-1;

elseif  i(l1)==0

ii((l1+1)/2)=-3;

else  ii((l1+1)/2)=3;

end

if q(l1)-q(l1+1)==1,

qq((l1+1)/2)=1;

elseif  q(l1)-q(l1+1)==-1

qq((l1+1)/2)=-1;

elseif  q(l1)==0

qq((l1+1)/2)=-3;

else  qq((l1+1)/2)=3;

end

end

for l2=1:4*Ts/dt;

I(l2+[0:M/4-1]*4*L)=ii;

Q(l2+[0:M/4-1]*4*L)=qq;

end;

Ia=I.*m;    %两路分别调制

Qa=Q.*n;

st=Ia+Qa;  %并串转换--矩形星座

ST=t2f(st);           %调制后信号的傅氏变换

Pp=abs(ST);

Pa=ST.*conj(ST)/T;

EPa=(EP*(loop1-1)+Pa)/loop1; %调制后信号功率谱

n_ch=sqrt(sita)*randn(size(t));  %信道噪声

st=st+n_ch; %加噪声

Iaa=st.*m;  %对两路信号分别解调

Qaa=st.*n;

Ir=real(f2t(t2f(Iaa).*GR)); %分别通过接收滤波器

Qr=real(f2t(t2f(Qaa).*GR));

yi=Ir(2*L:4*L:N);  %抽样判决

yq=Qr(2*L:4*L:N);

for l2=1:2:M/2-1

k1=abs(yi((l2+1)/2)+1);

k2=abs(yi((l2+1)/2)+0.5);

k3=abs(yi((l2+1)/2)-0.5);

k4=abs(yi((l2+1)/2)-1);

k=[k1,k2,k3,k4];

p1=abs(yq((l2+1)/2)+1);

p2=abs(yq((l2+1)/2)+0.5);

p3=abs(yq((l2+1)/2)-0.5);

p4=abs(yq((l2+1)/2)-1);

p=[p1,p2,p3,p4];

if k1==min(k)

yii(l2)=0;yii(l2+1)=0;

elseif k2==min(k)

yii(l2)=0;yii(l2+1)=1;

elseif k3==min(k)

yii(l2)=1;yii(l2+1)=0;

elseif k4==min(k)

yii(l2)=1;yii(l2+1)=1;

end

if p1==min(p)

yqq(l2)=0;yqq(l2+1)=0;

elseif p2==min(p)

yqq(l2)=0;yqq(l2+1)=1;

elseif p3==min(p)

yqq(l2)=1;yqq(l2+1)=0;

elseif p4==min(p)

yqq(l2)=1;yqq(l2+1)=1;

end

end

y(1:2:M-1)=yii;  %并串转换

y(2:2:M)=yqq;

for l4=1:L;

e(l4+[0:M-1]*L)=y;   %将输出信号变成双极性不归零码

end

Se=t2f(e);

Po=Se.*conj(Se)/T;

EPo=(EPo*(loop1-1)+Po)/loop1; %输出信号功率谱

n_err=n_err+length(find(y~=a));

end

Pe(loop1)=n_err/(M*loop2);

end

figure(1)

subplot(2,2,1)

plot(t,s,'r');

axis([-T/64,T/64,min(s)-0.5,max(s)+0.5])

xlabel('t (ms)');

ylabel('s (V/KHz)');

title('输入单极性不归零码信号波形');

subplot(2,2,2)

bb=30+10*log10(EP+eps);

plot(f,bb,'g')

axis([-20,20,-20,max(bb)+0.5])

grid

xlabel('f(Mhz)');

ylabel('P(f) (dBm/MHz)');

title('输入信号功率谱密度图');

subplot(2,2,3)

plot(t,e,'b');

axis([-T/64,T/64,min(e)-0.5,max(e)+0.5])

xlabel('t (ms)');

ylabel('e  (V/KHz)');

title('输出信号波形');

subplot(2,2,4)

bb=30+10*log10(EPo+eps);

plot(f,bb,'g')

axis([-20,20,-20,max(bb)+0.5])

grid

xlabel('f(Mhz)');

ylabel('Po(f) (dBm/MHz)');

title('输出信号功率谱密度图');

figure(2)

subplot(2,3,1)

plot(t,I,'r');

axis([-T/16,T/16,min(I)-0.5,max(I)+0.5])

xlabel('t (ms)');

ylabel('I  (V/KHz)');

title('I路信号波形');

subplot(2,3,2)

plot(t,st,'b');

axis([-T/16,T/16,min(st)-0.5,max(st)+0.5])

xlabel('t (ms)');

ylabel('st  (V/KHz)');

title('调制后信号波形');

subplot(2,3,3)

plot(t,Iaa,'b');

axis([-T/16,T/16,min(Iaa)-0.5,max(Iaa)+0.5])

xlabel('t (ms)');

ylabel('Iaa  (V/KHz)');

title('I路解调后信号波形');

subplot(2,3,4)

plot(t,Q,'b');

axis([-T/16,T/16,min(Q)-0.5,max(Q)+0.5])

xlabel('t (ms)');

ylabel('Q  (V/KHz)');

title('Q路信号波形');

subplot(2,3,5)

bb=30+10*log10(EPa+eps);

plot(f,bb,'g')

axis([-20,20,-20,max(bb)+0.5])

grid

xlabel('f(Mhz)');

ylabel('Pa(f) (dBm/MHz)');

title('调制后信号功率谱密度图');

subplot(2,3,6)

plot(t,Ir,'b');

axis([-T/16,T/16,min(Ir)-0.5,max(Ir)+0.5])

xlabel('t (ms)');

ylabel('Ir  (V/KHz)');

title('I路解调并滤波后信号波形');

figure(3)

subplot(1,2,1)

tt=[0:dt:Na*L*dt];

hold on

for jj=1:Na*L:N-Na*L

plot(tt,Ir(jj:jj+Na*L));

end

title('I路解调并滤波后信号波形眼图');

subplot(1,2,2)

semilogy(Eb_N0,Pe,'g');

eb_n0=10.^(Eb_N0/10);

hold on

plot(Eb_N0,0.5*erfc(sqrt(eb_n0/2)));

axis([0,14,1e-4,1])

xlabel('Eb/N0')

ylabel('Pe')

title('误码率曲线')

figure(4)

plot(I,Q,'.');

axis([-4,4,-4,4])

xlabel('I ');

ylabel('Q ');

title('16QAM星座图');

figure(5)

plot(f,Pp);

xlabel('w');

ylabel('V/HZ');

title('已调制信号频谱图');

matlab怎么生成星座图,关于16QAM生成星座图的程序问题相关推荐

  1. 【MATLAB】进阶绘图 ( colormap 颜色图矩阵分析 | 自定义 colormap 颜色图 | 生成 64 x 3 的 colormap 颜色图矩阵 )

    文章目录 一.colormap 矩阵分析 二.自定义 colormap 颜色图 1.生成 colormap 矩阵 2.代码示例 一.colormap 矩阵分析 imagesc 函数参考文档 : htt ...

  2. 在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和

    在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和 先创建一个新的脚本,并保存,在编辑器中进行编辑.具体如图,以5阶方阵为例: a=zeros(5,5): for i=(1 ...

  3. matlab 编程波形图,实验一MATLAB编程环境及其常用信号的生成及其波形仿真.doc

    word格式精心整理版 范文范例 学习指导 实验一 MATLAB编程环境及常用信号的生成及波形仿真 一.实验目的 1.学会运用Matlab表示常用连续时间信号的方法 2.观察并熟悉这些信号的波形和特性 ...

  4. 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图

    本文借助vs2005中自带的FileUpload控件实现图片文件的上传并生成缩略图. 实现过程:选择图片上传成功后,取得已经存在服务器的文件生成缩略图,并且判断是否是图片类型的文件,这个的判断可以在程 ...

  5. 通过.obj生成2d图像_自动生成 凹凸法线灯贴图 插件

    CrazyBump疯狂凹凸自动生成凹凸法线灯贴图 CrazyBump是一款专业的法线贴图制作软件,人们一般称之为超级法线凹凸生成软件,用来做材质中贴图中的凹凸和法线贴图是非常不错的,CrazyBump ...

  6. MATLAB之简谐信号声音的生成及其调制性

    文章目录 MATLAB之简谐信号声音的生成和保存 MATLAB之声音的调制特性 MATLAB之简谐信号声音的生成和保存 clc; clear all; clear out; dFs = 2^14; f ...

  7. pytorch制作CNN的类印象图 class impression(类别生成图)及生成对抗攻击样本

      本文给出完整代码实现CNN模型的类别可视化输入图像--类印象图,并基于此生成对抗样本图像. 1,完整代码   在上一篇文章中,我给出了CNN特征可视化的代码,在此基础上稍加修改就可以得到根据各类别 ...

  8. u-tools图床便捷生成markdown图片

    u-tools 图床 上传图片生成markdown图片非常便捷. 支持的图片服务器有几种,其中搜狗.网易和掘金的加载速度更快些: 也可以用阿里与和腾讯云的OSS; 其中网易生成图片不是原图尺寸好像被改 ...

  9. 序列生成_PR Structured Ⅴ:GraphRNN——将图生成问题转化为序列生成

    本文使用 Zhihu On VSCode 创作并发布 Paper | Code 本文一作实在是太大佬了,让我和小伙伴焦虑了好一阵子.作者主页送你们,将这份焦虑传递下去. Introduction 图生 ...

最新文章

  1. JS获取字符串实际长度!
  2. 200801一阶段1函数封装
  3. BZOJ 2045 容斥原理
  4. Linux c 进程名 pid,Linux C已知进程名字得到其PID号
  5. 关于jquery find 获取不到 input标签问题
  6. 解决nginx下connect() to 127.0.0.1:3000 failed
  7. sql server序列_SQL Server中的序列对象功能
  8. java实现系统参数的存储_基于ZooKeeper,Spring设计实现的参数系统
  9. ExtJS学习------Ext.define的继承extend,用javascript实现相似Ext的继承
  10. 计算机硬件驱动备份,WinXp系统下该怎样备份电脑硬件驱动?【图文教程】
  11. Wannacry蠕虫勒索软件“永恒之蓝”3种修复方案
  12. 【端午安康SXY】Python正则表达式进阶用法(以批量修改Markdown英文字体为例)
  13. Python 处理表格进行成绩排序的操作代码
  14. 洛谷P1200你的飞船在这
  15. 修复树莓派鼠标移动缓慢迟滞问题
  16. 逻辑与和逻辑或的执行顺序
  17. mysql无法执行二进制文件_kail系统64,mysql64,出现-bash: bin/mysqld: 无法执行二进制文...
  18. 笔记本cpu温度多少算正常
  19. 优秀 python 开源项目
  20. androidstudio窗口不显示

热门文章

  1. 计算机应用专业可以考哪些证,计算机应用技术专业学生需要考取哪些证书?
  2. 人为何有指纹【转自生物谷】
  3. 台式电脑win7计算机无法启动,台式机无法开机怎么重装win7系统
  4. POJ 2305大数求余
  5. bim计算机工程师考试,bim工程师考试报名条件是什么?bim工程师考试怎么报名?...
  6. 大数据相关总结(待续)
  7. zblog php 点赞,文章点赞开发版
  8. win2012 加域_Windows Server 2012 域设置及客户端加入
  9. 软考高级,考网规还是考项管?
  10. 多普达830玩友玩祖玛的时候要小心啊