该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
图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