做一个瑞利平坦衰变信道。
[目标]:用正弦波叠加的方式生成一个最简单的 Rayleigh Fading Process ,具有 Doppler Frequency 。
也就是生成一个 Rayleigh flat-fading channel with Doppler shift 。
[摘要]:Paper中公式(10)-(12) 给出了生成 Rayleigh Fading Process 的一种简单的数学表达式。
接下来给出了 matlab 源代码。
形容学校
function [r]=ray_doppler(fm, M, dt, N)
% Define variables:
% fm -- the maximum Doppler frequency in Hz一卡通怎么办理
% M -- the number of sinusoids to generate the Rayleigh process, M > 16
% dt -- one symbol duration in cond
% N -- the length of the fading quence in symbol
T=N*dt-dt;
t=0:dt:T;
c=sqrt(2/M); % scaling factor of power
w=2*pi*fm; % maximum Doppler frequency in rad
x=0;
y=0;
for n=1:M
alpha=(2*pi*n-pi+(2*pi*rand-pi))/(4*M);
ph1=2*pi*rand-pi;
ph2=2*pi*rand-pi;
x=x+c*cos(w*t*cos(alpha)+ph1); % x-axis Gaussian process, power is 1
y=y+c*cos(w*t*cos(alpha)+ph2); % y-axis Gaussian process, power is 1
end
% generate a complex-valued quence
% its amplitude is Rayleigh distributed
% its angle is uniformly distributed
r=(x+sqrt(-1)*y)/sqrt(2); % normalized to the unit power
具体的代码解释和原理介绍,请阅读附件中的 paper 。
[10 分钟攻略]:阅读 paper 的 Abstract, 阅读 paper 的公式(10)-(12),以及 公式下面的 matlab 源代码 和 解释,运行 matlab,Ctrl-C,Ctrl-V,ray_doppler(0.02, 64, 0.1, 100)。
[另外]: Paper 中提出了,通过检验生成的信道序列的 PDF 和 CDF 来核实 Rayleigh distribution 的可靠性。我觉得,还需要去检测 Power Spectrum Density 来核实 Doppler Frequency 的可靠性,比如用matlab语句:
plot(10*log10((abs(fft(r,1024))).^2)); 。
[Reference]: N. Kostov 'Mobile Radio Channels Modeling in MATLAB' Radioengineering, Vol 12, Issue 4, Dec 2003
补充 1][原创]: 在第 7 楼。通过检验 PDF, CDF 和 Spectrum 来核实生成的 Rayleigh flat-fading channel 的可靠性。
[补充 2][原创]: 在第 8 楼。利用 BPSK 的例子,说明如何利用生成的信道来仿真无线通信系统。
[补充 3][原创]: 在第 9 楼。讨论了一下,多长的 Rayleigh fading process 才会呈现出合理
的 Rayleigh distribution 。
[多说几句]:Rayleigh flat-fading channel 是非常基础非常基本的无线信道。比如说,在 OFDM 中,一个 subchannel 就是一个 Rayleigh flat-fading channel 。再比如说, frequency-letive fading channel 也是可以通过 Rayleigh flat-fading channel 来构建出来的。所以,很多无线信道都同 Rayleigh flat-fading channel 有很大联系。
[补充 1][原创]: 通过检验 PDF, CDF 和 Spectrum 来核实生成的 Rayleigh flat-fading channel 的可靠性。
我们生成一个信道 Rayleigh flat-fading channel,信道的最大多普勒频率为 0.02 Hz 。通信系统传输一个 symbol 的时间为 10 cond,传输 100000 个 symbol 。信道由 64 个正弦波叠加而成。
首先,统计出生成的 Rayleigh fading process 的 PDF 和 CDF 。把它们分别同理论值相比
榛子的功效
较。
然后,做出 Rayleigh flat-fading channel 的 Power Spectrum Density 来核实 Doppler Frequency 。我们做了一个 20000 点的 FFT, 而后得出 Power Spectrum Density。因为信道被设计成 最大多普勒频率为 0.02 Hz ,所以 Power Spectrum Density 应该集中在 (-0.02 Hz, +0.02 Hz) 的范围内。
% MATLAB source code
七大军区channel = ray_doppler(0.02, 64, 10, 100000);
衣服网站
% Rayleigh Fading process
rayleigh_fading_process = abs (channel);
% Power Spectrum Density
channelFFT = fft(channel, 20000);
channelPower = channelFFT.* conj(channelFFT) / 20000;
plot( linspace(-0.05, 0.05, 20000), [channelPower(10001:20000), channelPower(1:10000)]);
title('Power Spectrum Density'); xlabel('frequency (Hz)'); ylabel('Power');
如下图所示。
左上图 Rayleigh PDF -- probability density function 概率密度函数
右上图 Rayleigh CDF -- cumulative distribution function 累积分布函数
左下图 Power Spectrum Density (dB) -- 功率普密度
右下图 Power Spectrum Density -- 功率普密度
英语美文朗读
可见,生成 Rayleigh Fading process 的 PDF 和 CDF 都同理论值相吻合;channel 的 Power Spectrum Density 也主要集中在 ( - Doppler frequency, + Doppler frequency) 的范围内,符合我们的期望值。所以,这个 Rayleigh flat-fading channel 是可靠的。
[补充 2][原创]: 利用 BPSK 的例子,说明如何利用生成的信道来仿真无线通信系统。
Rayleigh flat-fading channel 产生的效应是 transmitted symbol 同 channel 进行 element-by-element multiplication 。
如下图所示。传输的 symbol 先被乘上一个 channel respon,然后再被加上一个 AWGN noi 。
这里,举 BPSK 的例子来具体说明一下。
系统描述:
调制技术:BPSK
信道参数:Rayleigh flat-fading channel,最大多普勒频率 0.02 Hz,
码元速率:10 symbol per cond
传输信息:500 symbol
信噪比: 30 dB
% MATLAB source code
湛江小吃fm = 0.02 ; % maximum Doppler frequency in Hz
fs = 10 ; % transmission rate, symbol per cond
N = 500; % length of the symbol quence
SNR_in_dB = 30;
M = 64 ; % the number of sinusoids to generate the Rayleigh process
dt = 1/fs ; % symbol duration in cond
SNR=exp(SNR_in_dB*log(10)/10); % absolute value of signal to noi ratio
Eb=1; % signal energy per bit
主板电池在哪sigma_noi=sqrt(Eb/SNR); % standard deviation of AWGN noi
% Wireless Communication System: BPSK
% ===================================
% Generate the binary data source
temp=rand(1,N); % a uniform randrom variable over (0,1)
dsource=(temp>=0.5); % (0,0.5)=>'0'; [0.5,1)=>'1'
% Signal mapping pattern, BPSK
s0=-1;
s1=+1;
% Generate the transmitted symbols
for kk=1:N
if (dsource(kk)==0)
transmitted_symbol(kk) = s0; % '0' = > s0
el
transmitted_symbol(kk) = s1; % '1' = > s1
end;
end;
% Generate the Rayleigh Flat-fading channel
channel=ray_doppler(fm, M, dt, N);
% Generate the channel noi, AWGN
noi = sigma_noi*randn(1,N);
% Obtain the received symbols by passing through the channel
received_symbol = transmitted_symbol.*channel + noi; % element-by-element multiplication
于是,我们就得到了 received symbol 。然后,在接收方就可以进行信道估计、码元判决、统计误码率等处理了。