无线通信系统中的莱斯分布MATLAB仿真

一、场景

1、当接收信号中有视距传播的直达信号时,视距传播成为主要接收分量,同时还有不同角度随机到达的多径信号叠加在这个主信号分量上,这时的接收信号包络服从莱斯分布。

2、更一般的场景:莱斯分布适用于一条路径明显强于其他多径的情况,但并不意味着这条路径一定是直达路径,在非直射系统中,如果某一散射路径的信号功率特别强,信号的衰落也会服从莱斯分布。是否存在一条路径明显强于其他多径是是莱斯分布和瑞利分布的显著依据。

二、代码

1、莱斯信道

存在强路径的多径传播,该强路径可以是直达路径或者是多径中的某一径,一下代码可以同时满足这两种情况。

function r = rice(k)
%r:莱斯信号包络
%x:叠加后信号实部
%y:叠加后信号虚部
%k; 信号幅度与噪声标准差之比(随机多径的特性)

%利用多径传播生成随机噪声,
n=6; %多径数(直达路径)、多径数-1(多径中某一径强)
alpha =rand(1,n); %产生n条路径的幅度向量
phi = 2*pi*rand(1,n); %产生n条路径的相位向量
n = alpha.*(exp(j.*phi))*ones(1,n)';

%直达路径(或某一径)信号
A = sqrt(2*k);
theta = 2*pi*rand(1);
s_t = A*exp(j*theta);

%接收信号
s_r = s_t + n;
x = real(s_r);
y = imag(s_r);
r = sqrt(x^2+y^2);

end

2、0阶修正贝塞尔函数

这主要用于将仿真情况和理论情况进行比较。

function [ y ] = Bessel0( x )
% 此函数用于计算0阶修正贝塞尔函数值
% 支持向量化输入输出
% 作用相当于MATLAB自带的库函数besseli(0,x)
theta =0.001:0.001:2*pi;
length(theta);
t= repmat(x, length(theta), 1);
t= reshape(t,1,[]);
theta= repmat(theta, 1, length(x));
t= t .* cos(theta);
t=reshape(t, [], length(x));
y=0.001/(2*pi) *sum(exp(t), 1);
end

3、主函数

K = 4.5; %主路径
N = 100000;  %包络的个数
r = zeros(1,N); %包络初始化
for i=1:N
    r(i)=rice(K);
end
index = [0:0.01:max(r)];
p = histc(r,index); %p为r在index规定的区间里的统计个数
P = zeros(1,length(p)); %P
for i=1:length(p)
    for j = 1:i
        P(i)=P(i)+p(j);
    end
end
P = P/N; %除以总数N得到概率
poly_c = polyfit(index,P,9); %用9阶多项式拟合P(index),得到多项式系数行列式
poly_c;
pd = polyder(poly_c); %多项式微分,即对P(index)微分,相当于求f(x)概率密度
pd;
p_practice = polyval(pd,index);%计算多项式pd在index的取值
sigma = 1; %噪声的标准差sigma,这在function rice(k)中定义噪声(弱径)标准差为1.
p_theory = index./sigma^2.*exp(-(index.^2+2*K)/(2*sigma^2)).*Bessel0(sqrt(2*K).*index); %理论值
%画图
plot(index,p_practice,'-b',index,p_theory,'-r')
legend('实际曲线','理论曲线')
xlabel('r')
ylabel('f(r)')
grid on;

三、仿真结果

(1)k=0,没有强路径,都是弱多径信号,衰落很大,只有噪声,瑞利分布。

(2)k=2,存在强路径,衰落一般,信号与噪声共存,莱斯分布。

(3)k=8,强路径,衰落缓慢,以信号为主,噪声较少,高斯分布。

四、结论

无线通信系统中,存在强路径的多径传播场景中,接收信号的包络一维分布服从莱斯分布。不存在强路径时,包络服从瑞利分布。路径非常强时,服从高斯分布。因为无直达通路无强路径的随机多径传播可看作是包络和相位随机缓慢变化的平稳高斯窄带随机过程(噪声),因此通常假设接收端接收到正弦波加窄带高斯噪声,从理论上证明接收信号包络一维分布服从莱斯分布。

由于瑞利信道莱斯信道都是实际无线信道常见的多径信道模型,因此需要进行MATLAB仿真来验证信道模型的准确性和可靠性。 以下是瑞利信道莱斯信道MATLAB仿真步骤: 1. 生成随机复高斯噪声序列。 2. 生成随机相位。 3. 生成随机入射波的幅度。 4. 对于瑞利信道,将信号与瑞利衰落信道的脉冲响应进行卷积。对于莱斯信道,将信号与莱斯衰落信道的脉冲响应进行卷积,同时加上直射波的幅度。 5. 对于瑞利信道,对输出信号进行快速傅里叶变换(FFT)。对于莱斯信道,对输出信号进行莱斯衰落信道的功率谱密度估计。 6. 绘制输出信号的功率谱密度图和时域波形图,以验证信道模型的准确性和可靠性。 需要注意的是,在MATLAB,可以使用以下函数来生成瑞利信道莱斯信道的脉冲响应: 1. ricianchan:用于生成莱斯信道的脉冲响应。 2. rayleighchan:用于生成瑞利信道的脉冲响应。 下面是一个简单的MATLAB代码示例,用于生成瑞利信道莱斯信道的脉冲响应并进行仿真: ```matlab % 生成随机复高斯噪声序列 n = 1000; % 信号长度 noise = randn(1,n) + 1i*randn(1,n); % 生成随机相位 phase = randn(1,n); % 生成随机入射波的幅度 amplitude = randn(1,n); % 生成莱斯衰落信道的脉冲响应 chan1 = ricianchan(1/100,0,0.1,0); % K = 1/100, fd = 0, PdB = 0.1, delay = 0 rx1 = filter(chan1,noise.*amplitude.*exp(1i*phase)); % 生成瑞利衰落信道的脉冲响应 chan2 = rayleighchan(1/100,0.1,0); % fd = 1/100, PdB = 0.1, delay = 0 rx2 = filter(chan2,noise.*amplitude.*exp(1i*phase)); % 绘制输出信号的功率谱密度图和时域波形图 subplot(2,1,1); psd(rx1); title('Rician Channel'); subplot(2,1,2); plot(abs(rx1)); title('Time Domain Waveform'); figure; subplot(2,1,1); psd(rx2); title('Rayleigh Channel'); subplot(2,1,2); plot(abs(rx2)); title('Time Domain Waveform'); ``` 通过上述代码,可以生成莱斯信道和瑞利信道的脉冲响应,并绘制输出信号的功率谱密度图和时域波形图,以进一步验证信道模型的准确性和可靠性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值