OFDM仿真可编辑修改word版Word格式.docx

上传人:b****5 文档编号:18121282 上传时间:2022-12-13 格式:DOCX 页数:17 大小:549.44KB
下载 相关 举报
OFDM仿真可编辑修改word版Word格式.docx_第1页
第1页 / 共17页
OFDM仿真可编辑修改word版Word格式.docx_第2页
第2页 / 共17页
OFDM仿真可编辑修改word版Word格式.docx_第3页
第3页 / 共17页
OFDM仿真可编辑修改word版Word格式.docx_第4页
第4页 / 共17页
OFDM仿真可编辑修改word版Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

OFDM仿真可编辑修改word版Word格式.docx

《OFDM仿真可编辑修改word版Word格式.docx》由会员分享,可在线阅读,更多相关《OFDM仿真可编辑修改word版Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

OFDM仿真可编辑修改word版Word格式.docx

5串并转换。

将一路高速数据转换成多路低速数据

6IFFT。

2,1

10,1

42.输出的复数

对上一步得到的相同分量和正交分量按照(Ich+Qch*i)进行IFFT运算。

并将得到的复

数的实部作为新的Ich,虚部作为新的Qch。

在实际运用中,信号的产生和解调都是采用数字信号处理的方法来实现的,此时要对信号进行抽样,形成离散时间信号。

由于OFDM信号的带宽为B=N·

Δf,信号必须以Δt=1/B=1/(N·

Δf)的时间间隔进行采样。

采样后的信号用sn,i

表示,i=0,1,…,N-1,则有

sn,i

=1∑N-1S

k=0

n,k

ej2ik/N

从该式可以看出,它是一个严格的离散反傅立叶变换(IDFT)的表达式。

IDFT可以采用快速反傅立叶变换(IFFT)来实现

7加入保护间隔。

由IFFT运算后的每个符号的同相分量和正交分量分别转换为串行数据,并将符号尾部G

长度的数据加到头部,构成循环前缀。

如果加入空的间隔,在多径传播的影响下,会造成载波间干扰ICI。

保护见个的长度G应该大于多径时的扩张的最大值。

保护时间FFT积分时间

OFDM符号周期

图1-2多径情况下,空闲保护间隔在子载波间造成的干扰

8加窗

图1-3保护间隔的插入过程

加窗是为了降低系统的PAPR,滚降系数为1/32。

通过这种方法,可以显著地改善OFDM

通信系统高的PAPR分布,大大降低了峰值信号出现的概率以及对功率放大器的要求,节约成本。

经常被采用的窗函数是升余弦窗

w(t)

⎧0.5+0.5cos(+t(Ts))

=

⎨1.0

0≤t≤Ts

Ts≤t≤Ts

⎪0.5+0.5cos((t-Ts)(Ts))

Ts≤t≤(1+)Ts

(1-2)

图1-9经过加窗处理后的OFDM符号示意图

9通过信道。

信道分为多径实验信道和高斯白噪声信道。

多径时延信道直射波河延迟波对于标准时间

按照固定比率递减,因此多径时延信道参数为比率和对大延迟时间。

10同步。

同步是决定OFDM系统高性能十分重要的方面,实际OFDM系统都有同步过称。

主要

同步方法有使用导频,循环前缀,忙算法三种。

研究目的为同步的可以详细实现本步,基本的方针可以略过此步,假设接收端已经于发射端同步。

11去掉保护间隔。

根据同步得到的数据,分别见给每个符号的同相分量和正交分量开头的保护间隔去掉。

12并串转换。

将每个符号分布在子信道上的数据,还原为一路串行数据。

13FFT。

对每个符号的同相分量和正交分量按照(Ich+Qch*i)进行FFT运算。

并将得到的实部

作为新的Ich,虚部作为新的Qch。

与发端相类似,上述相关运算可以通过离散傅立叶变换(DFT)或快速傅立叶变换(FFT)来实现,即:

Rn,k

1N-1

n,i

i=0

e-j2πik/N

14子载波解调

FFT后的同相粉脸感和正交分量两组数据在星座图上对饮高的点,由于噪声和信道的影

响,不再是严格的发送端的星座图。

将得到的星座图上的点按照最近原则判决为原星座图上的点,并按映射规则还原为一组数据。

15解码解交织。

按照编码交织对应解码,解交织的方法,还原为原始数据,并进行纠错处理。

16计算误码率。

比较第2步产生的数据和接收到的数据,计算误码率BER

17统计误码率

使用for循环,将SNR从0dB到30dB逐五变化,运行主函数,统计误码率,画出误码率曲线。

四、仿真结果及结论

16QAM下下下下下下

4

3

2

1

-1

-2

-3

-4

-4-3-2-101234

下下下下下下下下下OFDMTimeSignal

Amplitude(volts)

0.5

-0.5

010002000300040005000600070008000

Time(samples)

下下下下下下下下OFDMTimeSignal

-0.5010002000300040005000600070008000

下下下下下下下下下

20

10

-10

-20

-30

-40

00.050.10.150.20.250.30.350.40.450.5

NormalizedFrequency(0.5=fs/2)

下下下下下下下下下下下下下

1800

270

XY下下下下下下下下下下

-4-3-2-1

01234

下下下下下下下下下下下下

0102030405060708090100

00102030405060708090100

100

Rayleighfading

10-1

10-2

10-3

051015

SNR1

该函数基本能实现本次实验的要求,概括了OFDM主要的实现过程,能画出每一个步骤的图像,更具体形象地反应了OFDM的过程。

同时也能统计并绘制出在不同信噪比情况下的误码率曲线。

五、总结与体会

本程序没有添加信道估计部分,与峰均值仿真,如果添加了将更加完善对OFDM的研究。

且通过本次仿真实验,让我更加清楚地明白了OFDM调制技术的过程与其优缺点。

OFDM技术的优点主要有:

(1)OFDM调制方式适用于多径和衰落信道中的高速数据传输。

当信道因为多径的影响出现频率选择性衰落时,只有落在频率凹陷处的载波及其携带的信息受到影响,其它子载波未受损害;

(2)在OFDM调制方式中,通过插入保护间隔,可以很好地克服符号间干扰(ISI)和载波间干扰(ICI)

(3)由于OFDM各子载波相互正交,允许各子载波有1/2重叠,因此可以大大提高频谱利用率:

(4)由于深度衰落而丢失的一些子载波可通过编码、交织等措施来很好的恢复,提高系统抗误码性能,且通过各子载波的联合编码,具有很强的抗衰落能力;

(5)OFDM技术抗脉冲及窄带干扰的能力很强,因为这些干扰仅仅影响到很小一部分的子信道;

(6)与单载波系统相比,对采样定时偏移不敏感。

OFDM技术的缺点主要有:

(1)由于要求各子载波正交,所以对频率偏移和相位噪声很敏感;

(2)由于各子载波相互独立,峰值功率与均值功率比相对较大,且随子载波数目的增加而增加。

高峰均比信号通过功放时,为了避免信号的非线性失真和带外频谱再生,功放需要具有较大的线性范围,导致射频放大器的功率效率降低。

六、主要仿真代码

clearall;

closeall;

carrier_count=200;

%子载波数symbols_per_carrier=12;

%每子载波含符号数bits_per_symbol=4;

%每符号含比特数,16QAM调制IFFT_bin_length=512;

%FFT点数

PrefixRatio=1/4;

%保护间隔与OFDM数据的比例1/6~1/4

GI=PrefixRatio*IFFT_bin_length;

%每一个OFDM符号添加的循环前缀长度为1/4*IFFT_bin_length即保护间隔长度为128

beta=1/32;

%窗函数滚降系数GIP=beta*(IFFT_bin_length+GI);

%循环后缀的长度20SNR=15;

%信噪比dB

%==================================================

%================信号产生===================================

baseband_out_length=carrier_count*symbols_per_carrier*bits_per_symbol;

%所输入的比特数目

carriers=(1:

carrier_count)+(floor(IFFT_bin_length/4)-floor(carrier_count/2));

%共轭对称子载波映射复数数据对应的IFFT点坐标

conjugate_carriers=IFFT_bin_length-carriers+2;

%共轭对称子载波映射共轭复数对应的IFFT点坐标baseband_out=round(rand(1,baseband_out_length));

%输出待调制的二进制比特流

%==============16QAM调制====================================

complex_carrier_matrix=qam16(baseband_out);

%列向量complex_carrier_matrix=reshape(complex_carrier_matrix'

carrier_count,symbols_per_carrier)'

;

%symbols_per_carrier*carrier_count矩阵

figure

(1);

plot(complex_carrier_matrix,'

*r'

);

%16QAM调制后星座图title('

16QAM调制后星座图'

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

gridon

%=================IFFT===========================

IFFT_modulation=zeros(symbols_per_carrier,IFFT_bin_length);

%添0组成IFFT_bin_lengthIFFT运算IFFT_modulation(:

carriers)=complex_carrier_matrix;

%未添加导频信号,子载波映射在此处IFFT_modulation(:

conjugate_carriers)=conj(complex_carrier_matrix);

%共轭复数映射

%=================================================================

signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);

%OFDM调制即IFFT变换

time_wave_matrix=signal_after_IFFT;

%时域波形矩阵,行为每载波所含符号数,列ITTF点数,N个子载波映射在其内,每一行即为一个OFDM符号

%===========================================================

%=====================添加循环前缀与后缀====================================

XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);

fork=1:

symbols_per_carrier;

fori=1:

IFFT_bin_length;

XX(k,i+GI)=signal_after_IFFT(k,i);

end

GI;

XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);

%添加循环前缀

forj=1:

GIP;

XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);

%添加循环后缀

time_wave_matrix_cp=XX;

%添加了循环前缀与后缀的时域信号矩阵,此时一个OFDM符号长度为IFFT_bin_length+GI+GIP=660

%==============OFDM符号加窗==========================================

windowed_time_wave_matrix_cp=zeros(1,IFFT_bin_length+GI+GIP);

fori=1:

symbols_per_carrier

windowed_time_wave_matrix_cp(i,:

)=

real(time_wave_matrix_cp(i,:

)).*rcoswindow(beta,IFFT_bin_length+GI)'

%加窗升余弦窗

%========================生成发送信号,并串变换

==================================================

windowed_Tx_data=zeros(1,symbols_per_carrier*(IFFT_bin_length+GI)+GIP);

windowed_Tx_data(1:

IFFT_bin_length+GI+GIP)=windowed_time_wave_matrix_cp(1,:

symbols_per_carrier-1;

windowed_Tx_data((IFFT_bin_length+GI)*i+1:

(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_time_wave_matrix_cp(i+1,:

%并串转换,循环后缀与循环前缀相叠加

%=======================================================

Tx_data=reshape(windowed_time_wave_matrix_cp'

(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)'

%加窗后循环前缀与后缀不叠加的串行信号

temp_time1=(symbols_per_carrier)*(IFFT_bin_length+GI+GIP);

%加窗后循环前缀与后缀不叠加发送总位数

figure

(2)subplot(2,1,1);

plot(0:

temp_time1-1,Tx_data);

%循环前缀与后缀不叠加发送的信号波形

ylabel('

Amplitude(volts)'

)xlabel('

Time(samples)'

title('

循环前后缀不叠加的OFDMTimeSignal'

temp_time2=symbols_per_carrier*(IFFT_bin_length+GI)+GIP;

subplot(2,1,2);

temp_time2-1,windowed_Tx_data);

%循环后缀与循环前缀相叠加发送信号波形

循环前后缀叠加的OFDMTimeSignal'

%===============加窗的发送信号频谱=================================

symbols_per_average=ceil(symbols_per_carrier/5);

%符号数的1/5,10行

avg_temp_time=(IFFT_bin_length+GI+GIP)*symbols_per_average;

%点数,10行数据,10个符号

averages=floor(temp_time1/avg_temp_time);

average_fft(1:

avg_temp_time)=0;

%分成5段fora=0:

(averages-1)

subset_ofdm=Tx_data(((a*avg_temp_time)+1):

((a+1)*avg_temp_time));

%利用循环前缀后缀未叠加的串行加窗信号计算频谱

subset_ofdm_f=abs(fft(subset_ofdm));

%分段求频谱

average_fft=average_fft+(subset_ofdm_f/averages);

%总共的数据分为5段,分段进行FFT,平均相加end

average_fft_log=20*log10(average_fft);

figure(3)

subplot(2,1,2)

plot((0:

(avg_temp_time-1))/avg_temp_time,average_fft_log)%归一化0/avg_temp_time:

(avg_temp_time-1)/avg_temp_time

holdon

1/IFFT_bin_length:

1,-35,'

rd'

)gridon

axis([00.5-40max(average_fft_log)])ylabel('

Magnitude(dB)'

NormalizedFrequency(0.5=fs/2)'

)title('

加窗的发送信号频谱'

%====================添加噪声=================================

Tx_signal_power=var(windowed_Tx_data);

%发送信号功率linear_SNR=10^(SNR/10);

%线性信噪比noise_sigma=Tx_signal_power/linear_SNR;

noise_scale_factor=sqrt(noise_sigma);

%标准差sigma

noise=randn(1,((symbols_per_carrier)*(IFFT_bin_length+GI))+GIP)*noise_scale_factor;

%产生正态分布噪声序列

Rx_data=windowed_Tx_data+noise;

%接收到的信号加噪声

%=====================接收信号串/并变换去除前缀与后缀

==========================================

Rx_data_matrix=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);

fori=1:

Rx_data_matrix(i,:

)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:

i*(IFFT_bin_length+GI)+GIP);

%串并变换

Rx_data_complex_matrix=Rx_data_matrix(:

GI+1:

IFFT_bin_length+GI);

%去除循环前缀与循环后缀,得到有用信号矩阵

%==============================================================

%OFDM解码16QAM解码

%=================FFT变换=================================

Y1=fft(Rx_data_complex_matrix,IFFT_bin_length,2);

%OFDM解码即FFT变换Rx_carriers=Y1(:

carriers);

%除去IFFT/FFT变换添加的0,选出映射的子载波Rx_phase=angle(Rx_carriers);

%接收信号的相位

Rx_mag=abs(Rx_carriers);

%接收信号的幅度figure(4);

polar(Rx_phase,Rx_mag,'

bd'

%极坐标坐标下画出接收信号的星座图title('

极坐标下的接收信号的星座图'

%====================================

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1