无线信道
如果仿真采用的带宽为20M,总子载波数为2048,则每个子载波的带宽为20M/2048,为9.77KHz,在两种不同的相干带宽下,能有很大幅度相关性的相邻子载波数分别是475、57。
对相干带宽与相干时间的求解对下面多址技术仿真有指导意义。
说明:这里仿真一个基本的链路,在一次仿真后的得出的信道矩阵及延时参数下,对数据源QPSK调制,发送至多径信道,加入高斯白噪声后解调,得出性能:
SNR=20,SER=0.0094;
链接:由于该SCM函数比较复杂,每次调用仿真产生信道系数和延时向量都需要很长的时间,所以本文只限于单次产生仿真信道。
% Setting and modifying default input parameters
% path = 6;SubPathsPerPath = 20;l inks = 1; Scenario = urban_micro;
% NumTimeSample = 1e5;MS and BS = 1*1;
% SISO channel which convert default 5-D array to 2-D array
scmpar.NumTimeSample = 1e5; % set TimeSample
scmpar = scmparset;
linkpar = linkparset(1); % set only one link
antpar = antparset;
scmpar.NumTimeSamples = 1; % 1 time samples perlink
scmpar.ScmOptions =' urban_canyon'; % urban canyon option
scmpar.Scenario = 'urban_macro'; % choose urban_macro Scenario
% ----set number of the MS and BS,to set antpar----
bs_array = zeros(1,2,1,90);
bs_array(1,:,:,:) = 1;
antpar.BsGainPattern = bs_array;
ms_array = zeros(1,2,1,90);
ms_array(1,:,:,:) = 1;
antpar.MsGainPattern = ms_array;
[H delays] = scm(scmpar,linkpar,antpar); % generate H and Delay
% convert to 2-D,easy to be used
h(1:6) = H(:,:,1:6);
QPSK调制:
tmp = round(rand(2,SP.inputBlockSize));
tmp = tmp*2 - 1;
inputSymbols = (tmp(1,:) + i*tmp(2,:))/sqrt(2);
信道矩阵校正:
h_channel=Channelsimu(InputSamplePeriod,PathDelays,PathGains);
校正函数:
function Out=Channelsimu( ts,Delay,Gain )
LengthOut=( Delay( end )-Delay( 1 ) )/ts+1;
Out=zeros( 1,LengthOut );
for IndexDelay=1:length( Delay )
IndexGain=round( ( Delay( IndexDelay )-Delay( 1 ) )/ts+1 );
Out( 1,IndexGain )=Gain( IndexDelay );
End
过信道,加噪声:
RxSamples = filter(h_channel,1,inputSymbols);
tmp = randn(2,SP.inputBlockSize);
complexNoise = (tmp(1,:) + j*tmp(2,:)) / sqrt(2);
noisePower = 10^(-SP.SNR/10);
% Add AWGN to the transmitted signal
RxSamples = RxSamples + complexNoise * sqrt(noisePower);
QPSK解调:
EstSymbols = sign(real(RxSamples)) + j * sign(imag(RxSamples));
EstSymbols = EstSymbols / sqrt(2);
分析:其中可以看到延迟向量在郊区宏小区,市区微小区和市区宏小区之间依次递增;功率衰减在郊区宏小区,市区微小区和市区宏小区之间依次递减。这是符合参考模型参数分布的。
OFDMA系统实现框图 SC-FDMA系统实现框图子载波映射
% Subcarrier mapping
% Interleaved(distributed) mapping
inputSamples_ifdma(1+SP.subband:Q:numSymbols) = inputSymbols_freq;
% Localized mapping
inputSamples_lfdma([1:SP.inputBlockSize] + SP.inputBlockSize*SP.subband) = inputSymbols_freq;
子载波逆映射
% Subcarrier de-mapping
Y_ifdma = Y_ifdma(1+SP.subband:Q:numSymbols);
Y_lfdma = Y_lfdma([1:SP.inputBlockSize] + SP.inputBlockSize*SP.subband);
结论:MMSE均衡下,I-FDMA的链路性能要优于L-FDMA。
分析:这是由于分布式FDMA将用户的每个子载波等间隔的放置在全频带上,这样可以获得更多的频率分集增益。从理论上分析,将传输信息以不同的载频发射,接收端就可以得到相关性越加减小的信号(当载频间隔大于相干带宽时,则可以接收到衰落特性不相关的信号),这样就可以降低多径衰落的影响,改善传输可靠性。
以L-FDMA为例:
先进行理想信道估计,filter(channel,1),得到信道响应;
% Find the channel response for the localized subcarriers
H_eff = H_channel([1:SP.inputBlockSize] + SP.inputBlockSize*SP.subband);
% Performe channel equalization in the frequency domain
if SP.equalizerType == 'ZERO'
Y_lfdma = Y_lfdma ./ H_eff;
elseif SP.equalizerType == 'MMSE'
C = conj(H_eff) ./ (conj(H_eff) .* H_eff + noisePower);
Y_lfdma = Y_lfdma .* C;
end
结论:MMSE性能优于ZF。
分析:
1.迫零均衡可以将信号无失真地恢复出来,但当信道存在如果频谱深衰落点时(信道响应很小,或者可能为0)时,由ZF加权系数计算式可知,此时的补偿直接放大了噪声,容易产生误差。
2.而MMSE均衡计算式中可以看到,补偿值中加入了信噪比的修正项,这样即使在深衰点也不会过分放大噪声。
OFDMA仿真流程图 SC-FDMA仿真流程图% DFT-precoding
inputSymbols_freq = fft(inputSymbols)/sqrt(SP.inputBlockSize);
% Initialize the output subcarriers
inputSamples_fdma = zeros(1,numSymbols);
inputSamples_ofdma = zeros(1,numSymbols);
% Subcarrier mapping
inputSamples_fdma([1:SP.inputBlockSize] + SP.inputBlockSize*SP.subband) = inputSymbols_freq;
inputSamples_ofdma([1:SP.inputBlockSize] + SP.inputBlockSize*SP.subband) = inputSymbols;
% Convert the signal back to time domain
EstSymbols_fdma = ifft(Y_fdma)*sqrt(SP.inputBlockSize);
EstSymbols_ofdma = Y_ofdma;
结论:ZF均衡下SC-FDMA性能劣于OFDMA。
分析:
1.OFDMA所有的子载波是正交的,当OFDMA在频域进行解调时,各个子载波间的衰落是独立的,不相干的子载波间衰落不会互相影响,其性能取决于深衰落的子载波。
2.对于SC-FDMA解调是在时域进行的,在频域的信号被IFFT之后衰落就被平均,即衰落程度被均分到各个子载波上,也就是说各种好坏的衰落被均分。
3. SC-FDMA对SNR更为敏感。由图可见当SNR增加时,两者性能接近,这也很好的解释了SC-FDMA在时域解调是IFFT平均的结果,随着SNR的增加,被平均的衰落的影响就会越加减小。
1.调制
if dataType == 'Q-PSK'
tmp = round(rand(2,SP.inputBlockSize));
tmp = tmp*2 - 1;
inputSymbols = (tmp(1,:) + i*tmp(2,:))/sqrt(2);
elseif dataType == '16QAM'
alpha16qam = [-3 -1 1 3]; % 16-QAM alphabets
ip = randsrc(1,SP.inputBlockSize,alpha16qam) + j*randsrc(1,SP.inputBlockSize,alpha16qam);
inputSymbols = (1/sqrt(10))*ip; % normalization of energy
end
2.解调
if dataType =='Q-PSK'
EstSymbols_lfdma = sign(real(EstSymbols_lfdma)) + j * sign(imag(EstSymbols_lfdma));
EstSymbols_lfdma = EstSymbols_lfdma / sqrt(2);
elseif dataType == '16QAM'
x_re = real(EstSymbols_lfdma); % real part
x_im = imag(EstSymbols_lfdma); % imaginary part
%--------------------------------
ipx_re(find(x_re< -2/sqrt(10))) = -3;
ipx_re(find(x_re > 2/sqrt(10))) = 3;
ipx_re(find(x_re>-2/sqrt(10) & x_re<=0)) = -1;
ipx_re(find(x_re>0 & x_re<=2/sqrt(10))) = 1;
ipx_im(find(x_im< -2/sqrt(10))) = -3;
ipx_im(find(x_im > 2/sqrt(10))) = 3;
ipx_im(find(x_im>-2/sqrt(10) & x_im<=0)) = -1;
ipx_im(find(x_im>0 & x_im<=2/sqrt(10))) = 1;
%-------------------------------
ipx = ipx_re + j*ipx_im;
EstSymbols_lfdma = ipx/sqrt(10);
end
结论:调制方式QPSK性能要优于16QAM。
分析:
QPSK是2个bit映射到一个符号,16QAM是4个bit映射到一个符号,在假定所加入相同噪声功率的噪声时,由于16QAM符号归一化后是除以sqrt(10),QPSK符号归一化是除以sqrt(2),解调又是按照对应的相同的方式解调,此时16QAM解调的“精度”会小于QPSK,因此传输一个符号的误符号率就大于QPSK。
结论:在相同的仿真参数环境下,EPA模型的总体性能要优于EVA。
分析:EPA模型只有七径,车速3km/s,EVA 模型有九径,车速120km/s。理论上EPA模型要更优。
注意:从图可以看到,迫零均衡下分布式的OFDMA的与集中式的OFDMA的性能曲线几乎重合。
分析:由于OFDMA可以有效抵抗信道的频率选择性,各子载波是正交独立的,OFDMA的符号是在频域的集合(集中式或分布式),各个不相干的子载波间衰落不会影响,因此放在连续段的子载波或者将每个子载波等间隔的放置在全频带上对接收端的接收是没有区别。
链接:其实在MMSE下的结果亦是如此。
结论:图13是在EPA模型下的仿真结果,与图12无异,只是不同信道下总体性能有优劣。
分析:信道的不同。
网友评论