用matlab仿真函数在空间分布,求代做MATLAB仿真

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

图4-1OFDM程序流程图

主要使用了rand()函数产生随机数据,并且调用函数QAM16_mod(),使产生的数据逐一的映射到坐标系中,形成16QAM星座图。而后调用QAM_16demod()函数,将解调后的数据重新映射到16QAM星座图上。其中QAM16_mod()函数主要程序见附录。

本次仿真采用的子载波数为256,根据输入不同的信噪比来比较系统的误码率和性能。

4.4仿真结果及分析

(1)仿真一

输入25分贝的信噪比,仿真出的图形如下:

图4-2是输入随机数据的星座图,从此图中可以看出,输入的随机数据已经过了16QAM调制,调制后的数据的星座点如下图所示。红色的叉为星座点。

图4-216QAM星座图

图4-3是输入加入噪声前和加入噪声后的信号波形的比较。左右分别是信号的实部

和虚部,上下分别为加入噪声前和加入噪声后的噪声。从图中我们能够看出,信号经过高斯白噪声的信道,可以很清楚的看到信号的数值部分发生了变化,即产生了我们通常所说的失真。

图4-3加入噪声前后信号对比

图4-4是加入噪声前和加入噪声后的信号幅值和相位的比较,左侧的是幅值部分,右侧的是相位部分。上面两个图是加入高斯白噪声之前的信号,下面两个图是加入高斯白噪声之后的信号。通过这个图,我们能够看出,信号经过高斯白噪声的信道,它的幅值发生了一些变化,即产生了我们通常所说的幅度失真。而对于相位,则变化的幅度很大,从图中的坐标轴刻度,就能够很明显的看出,相位发生了严重的变化,产生了严重的相位失真。

图4-4加入噪声前后信号幅值和相位比较

图4-5是加入循环前缀前后的信号波形的比较,上边两图是未加入循环前缀的信号波形,下侧两图是加入循环前缀(加在帧前)的信号波形。从图中可以看出,循环前缀是把帧的后部分复制到了帧前,如下图所示。

图4-5加入循环前缀前后信号波形比较

图4-6是接收到的OFDM信号的星座图,从图中可以看到,经过高斯白噪声后,星座图的点位置发生了变化,它们分布在经过噪声前的星座点周围,分布比较混乱,如图所示。经过高斯白噪声信道之前的信号星座在图中用叉表示,经过高斯白噪声信道之后的信号星座在图中用圆圈表示,很明显,圆圈都分布在叉周围,这是因为信号经过含有高斯白噪声的信道,信号发生了失真,于是星座图也发生了变化。

图4-6接收的OFDM符号星座图

解调后系统的误码率为:0.1641

有以上的仿真可知,在输入信噪比为25分贝时,输出信号有一定的误码率。

(2)仿真二

输入信道比为40分贝时。仿真图形如下:

图4-7是输入随机数据的16QAM星座图。红色的叉为星座点。

图4-716QAM星座图

图4-8是加入噪声前和加入噪声后的信号波形的比较。从图中我们能够看出,信号经过高斯白噪声的信道,可以很清楚的看到信号的数值部分几乎没有变化,即加入噪声对信号的影响非常小。

图4-8 加入噪声前后信号对比

图4-9是加入噪声前和加入噪声后的信号幅值和相位的比较。通过这个图,我们能够看出,信号经过高斯白噪声的信道,它的幅值几乎没有发生变化。而对于相位,则变化的幅度很大,从图中的坐标轴刻度,就能够很明显的看出,相位发生了严重的变化,产生了严重的相位失真。但是这并不引起信号产生错误。

图4-9 加入噪声前后信号幅值和相位比较

图4-10是加入循环前缀前后的信号波形的比较,上边两图是未加入循环前缀的信号波形,下侧两图是加入循环前缀(加在帧前)的信号波形,左侧两图是信号的实数部分,右侧两图是信号的虚数部分。从图中可以看出,循环前缀是把帧的后部分复制到了帧前,如下图所示。

图4-10 加入循环前缀前后信号波形比较

图4-11是接收到的OFDM信号的星座图,从图中可以看到,经过高斯白噪声后,星座图的点位置发生了很小的变化,它们分布在经过噪声前的星座点周围,比较接近原来信号的星座点,如图所示。可以说星座图没有什么变化,换一句话说,接收到的OFDM符号没有发生误码。

Function complex=QAM16_mod(number)

%16QAM星座图映射---把输入的数映射成对应的坐标(复数)

A=[-3-3*i,-3-i,-1-3*i,-1-i,-3+3*i,-3+i,-1+3*i,-1+i,3-3*i,3-i,1-3*i,1-i,3+3*i,3+i,1+3*i,1+i];

complex=A(number+1);

%complex为对输入数据进行星座点映射后的坐标(复数)

其中QAM_16demod()函数主要程序如下:

function [number,complex]=QAM16_demod(c)

%16QAM星座图重映射---在星座图上对散乱的点找最近的点作为它的星座点

%complex为离星座点最近的那点的坐标,即是解调后的坐标

%number为解调后的OFDM数据

A=[-3-3*i,-3-i,-1-3*i,-1-i,-3+3*i,-3+i,-1+3*i,-1+i,3-3*i,3-i,1-3*i,1-i,3+3*i,3+i,1+3*i,1+i];

for k=1:16

B(k)=sqrt((real(c)-real(A(k)))^2+(imag(c)-imag(A(k)))^2);

end

number=find(B==min(B))-1;

complex=A(find(B==min(B)));

close all;

clc;

snr=input('请你输入信号经信道时的信噪比snr(以dBW为单位):');

N=256;%N为载波数,即一个OFDM符号的长度

for k=1:N

X(k)=fix(rand()*16);%随机产生256个[0,15]之间的整数

X1(k)=QAM16_mod(X(k));%进行星座图映射,X 可以认为是已经进行串/并转换后的输出信号

end

figure(1)

plot(real(X1),imag(X1),'xr');

title('随机输入数据的星座图');

xlabel('An(实部)');

ylabel('Bn(虚部)');

X2=ifft(X1,N);%对X进行傅里叶反变换

X3=[X2((N-0.25*N+1):N),X2];%在该OFDM符号中加入循环前缀

X4=awgn(X3,snr);%接收机最终接收的信号

figure(2)

subplot(2,2,1)

plot(1:numel(X3),real(X3),'r');

title('加入噪声前的信号波形(实部部分)');

subplot(2,2,3)

plot(1:numel(X4),real(X4),'r');

title('加入噪声后的信号波形(实部部分)');

subplot(2,2,2)

plot(1:numel(X3),imag(X3),'b');

title('加入噪声前的信号波形(虚部部分)');

subplot(2,2,4)

plot(1:numel(X4),imag(X4),'b');

title('加入噪声后的信号波形(虚部部分)');

figure(3)

subplot(2,2,1)

plot(1:numel(X3),abs(X3),'r');

title('加入噪声前的信号幅度');

subplot(2,2,3)

plot(1:numel(X4),abs(X4),'r');

title('加入噪声后的信号幅度');

subplot(2,2,2)

plot(1:numel(X3),angle(X3),'b');

title('加入噪声前的信号相角');

subplot(2,2,4)

plot(1:numel(X4),imag(X4),'b');

title('加入噪声后的信号相角');

figure(4)

axis([0 700 -0.4 0.4])

subplot(2,2,1)

plot(1:numel(X2),real(X2),'r');

title('未加入循环前缀的信号波形(实部部分)');

axis([0 700 -0.4 0.4])

subplot(2,2,3)

plot(1:numel(X3),real(X3),'r');

title('加入循环前缀(加在帧前)的信号波形(实部部分)');

axis([0 700 -0.4 0.4])

subplot(2,2,2)

plot(1:numel(X2),imag(X2),'b');

title('未加入循环前缀的信号波形(虚部部分)');

axis([0 700 -0.4 0.4])

subplot(2,2,4)

plot(1:numel(X3),imag(X3),'b');

title('加入循环前缀(加在帧前)的信号波形(虚部部分)');

%------------------------------接收部分------------------------------

Y1=X4(0.25*N+1:N+0.25*N);

Y2=fft(Y1,N);

figure(5)

plot(real(X1),imag(X1),'xr',real(Y2),imag(Y2),'ob');

title('接收的OFDM符号的星座图')

xlabel('An(实部)');

ylabel('Bn(虚部)');

for k=1:numel(Y1)

[Y(k),Y3(k)]=QAM16_demod(Y2(k));

end

error=0;%解调后错误的个数

for k=1:N

if X(k)~=Y(k)

error=error+1;

end

end

disp('解调后错误的个数为:')

disp(error)

disp('误码率为:')

disp(error/N)

图4-11 接收的OFDM符号星座图

解调后系统的误码率为:0

由以上仿真结果可知,在信噪比为40分贝时,系统误码率为0.

要求能把图仿出,要有程序有意着联系WX:CHl5200000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值