多径传播matlab仿真
writer: M宝可梦
输入信号
s(t) = Acos(wc*t)
经过多条路径时变的衰落和时延得到接收信号
接收信号:
r(t) = Σ ai(t)*cos{wc*[t - Ti(t)]}
% 根据模拟通道数为100,所以求和次数为100次
= Σ ai(t)*cos[wc*t + PHi(t)]
% phase 相位; PHi(t) = -wc * Ti(t)
% 仿真起始点
= Σ ai(t)*cos[PHi(t)]*cos(wc*t) - Σai(t)*sin[PHi(t)]*sin(wc*t)
= X(t)*cos(wc*t) - Y(t)*sin(wc*t)
= V(t)cos[wc*t + PH(t)]
其中:
X(t) = Σai(t)*cos[PHi(t)]
Y(t) = Σai(t)*sin[PHi(t)]
V(t) = sqrt[X^2 + Y^2]
PH(t) = arctan(Y/X)
仿真思路:
1.衰减ai(t),以及时延PHi(t) 的模拟:
·幅值衰减由随机数产生,符合[0,1]上的均匀分布
·PHi(t)时延产生方式同幅值衰减
·为了保持与原理上的一致性,引入变量t影响两个参数
2.wc 为超参数##########未使用
3.输出V(T),PH(t):
代码说明
·为方便比较最终接收端的信号分布,做出了瑞利分布图象
·sum_signal函数为接受所有通道的信号之叠加
仿真结果如图
% 参考:
https://blog.csdn.net/weixin_44606638/article/details/106762784
https://blog.csdn.net/qq_42691315/article/details/115015058
clear;
clc;
% 参数说明:
% signal 第一列为幅值,第二列为相位
% f_width,x_width 为幅值的概率和数值
% f_phase,x_phase 为相位的概率和数值
for i = 1:10000 %仿真次数
[signal(i,1),signal(i,2)] = sum_signal(100);
end
[f_width,x_width]=ksdensity(signal(:,1));
[f_phase,x_phase]=ksdensity(signal(:,2));
% 将相位划归到[-pi, pi]区间上
for i = 1: 100
delta = max(x_phase(1,:)) - min(x_phase(1,:));
x_phase(1,i) = (x_phase(1,i) -min(x_phase(1,:)))/delta;
x_phase(1,i) = x_phase(1,i)*2*pi-pi;
end
% rayleigh分布的pdf
cs2=var(signal(:,1))*2; %方差为实部或虚部的方差
r=linspace(0,50,1000);
fx2=r./(cs2).*exp(-r.^2/2/(cs2));
% 作图
figure(1);
subplot(121);
plot(x_width,f_width);
hold on;plot(r,fx2,'r:');hold off;
ylabel('幅度分布');xlabel('幅度');title('幅度分布');axis([-2 20 0 0.2]);
subplot(122);
plot(x_phase,f_phase);
hold on;plot([-pi pi],[1/2/pi 1/2/pi],'r:');hold off;
ylabel('相位分布');xlabel('相位/rad');title('相位分布');axis([-pi-0.5 pi+0.5 0 0.2]);
function [width,phase] = sum_signal(channel_num)
% 通过叠加的形式求得最终接收信号,此为一次仿真结果
% 参数信息、
% input:
% channel_num : 路径数目
% output:
% phase : 接收到信号相位移动
% width : 接收到信号的幅值
X = 0;
Y = 0;
for i = 1:channel_num
a(i) = rand(1,1); % 幅值衰减随机赋值为[0,1]
ph(i) = 2*pi*rand(1,1) - pi;% 将时延相位划归到 [-pi,pi]
X = X + a(i)*cos(ph(i));
Y = Y + a(i)*sin(ph(i));
end
width = sqrt(X^2+Y^2);
phase = atan2(Y,X);
end