⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 本代码是基于OFDM系统的一种转换域估计算法
💻 TXT
字号:
我怀疑我写的OFDM的瑞利多径程序原理上有问题,能否请高手帮忙参考参考!多谢多谢。
为了避免占用论坛太多空间,问题解决后上传所有m文件,给新手共享。
N=1024; % 1024个子载波
GI=64; % 保护间隔
CH=(1-exp(-1))*[ exp(0:-1:-5) ]; % 瑞利多径信道的功率分布。我用6径模型。1-exp(-1)把能量归一化
SNR = 20 ; % 信噪比dB
sig2=1/(N*10^(SNR/10)); % 加性高斯白噪声的方差。
trellis=poly2trellis([7],[133 171]); %卷积码的编码格行图 
load ENC16.mat %加载16QAM映射用的星座图
btot=N/2-4; %一个OFDM码元的传输bit总数
TransmitIter=100; %传输OFDM符号总数
totalErrors=0; %错误比特总数
for k=1:TransmitIter
Msg=[randn(1,btot)>0 zeros(1,4)]; %发送的信息序列
Msg_coden=convenc(Msg,trellis); %卷积编码 
Msg_mod=modulate(Msg_coden,s16,N); %16qam星座图映射(不是matlab自带的) 
ofdm_symbol=ifft(Msg_mod,N); % 1024点ifft
ofdm_symbol_cp=[ofdm_symbol(end-GI+1:end) ofdm_symbol]; % 加保护间隔 
ch=sqrt(CH/2).*(randn(1,6)+j*randn(1,6)); % 多径信道。
symb_multpath = filter(ch,1,ofdm_symbol_cp); %多径 
noise = sqrt( sig2/2 ) * ( randn(1,N+GI) + i*randn(1,N+GI) ); %高斯白噪声
y = symb_multpath + noise; % 信号加白噪声
rec_symbol = fft( y(GI+1:N+GI) ,N); %去循环前缀,做1024点fft
rec_symbol = rec_symbol./fft(ch,N); % 一阶频域均衡,设信道估计非常准确
% y_demod = demodulate(rec_symbol,s16,c16,N); %硬判决(不是matlab自带的) 
% Y_temp = vitdec( y_demod ,trellis,tblen,'term','hard' ); %硬判决维特比译码
y_demod = softdecision(rec_symbol,sig2*N,s16,3); % 软判决 (不是matlab自带的) 
Y_temp = vitdec( y_demod ,trellis,tblen,'term','soft',3 ); %判判决特比译
Errors_temp = sum( xor( Y_temp( 1:end-4 ) , Msg(1:end-4) ) ); %计算单个OFDM符号中错误bit数量
totalErrors=totalErrors+Errors_temp; % 统计总共错了多少bit
end
ber=totalErrors/(btot*TransmitIter) % 计算误比特率

我有以下几个问题:
1、瑞利信道模型。不知道这仿真中的模型是否正确。一直没有考虑明白如何确定多径信道抽头数量。仿真中的是6径模型;
2、瑞利信道中的信噪比是否就是指ofdm_symbol(即ifft输出信号)与白噪声的功率之比;还是指等效信噪比?
3、仿真在高斯信道下,性能比较理想,而且软判决的确要比硬判决多大约3dB的软判决增益。但是在这个瑞利信道中软判决增益却只有1dB不到,但据许多文章上讲,应该要大于高斯信道下的软判决增益才对。
4、高斯信道下,当SNR=10dB时,软、硬判决ber大约分别是5*10^(-5)和7*10^(-3).SNR每增加减小1dB,性能变化非常明显。但是在这个瑞利模型中,虽然经过了一阶频域均衡,但是ber比高斯时候差了好多,在SNR=20dB时候,软、硬判决ber分别大约是3.6*10^(-4)和4.7*10^(-4),并且随着信噪比的增加变化非常缓慢。在SNR=30dB时候,软、硬判决ber才达1.1*10^(-5)。20dB、30dB可是100倍、1000倍啊!太可怕了。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -