📄 channel.m
字号:
function [out]=channel(in,fs,fd,n_delay,t_delay,p_delay)
%in是输入码元,是一行矩阵,可以是实数也可以是复数
%fs是输入码元的比特率
%fd是多普勒频移
%n_delay是多径信道的径数
%t_delay是多径信道各径的时延时间
%p_delay是多径信道各径的功率db值
Ns=length(in);
Ts=1/fs; %码元间隔
dt=Ts; %时域采样间隔
df=1/(Ns*Ts); %频域采样间隔
dn=ceil(t_delay/dt); %各路对应时域抽样值移位个数
p=10.^(p_delay/10); %各径平均功率
sum_p=sum(p);
p=p/sum_p; %归一化
r=zeros(n_delay,Ns);
r_one=ClarkeModel( fd, fs, Ns );
for j=1:n_delay
r(j,:)=r_one;
end;
for j=1:n_delay
r(j,:)=sqrt(p(j)).*[zeros(1,dn(j)), r(j,1:(Ns-dn(j)))];
end;
rr=zeros(1,Ns);
for j=1:n_delay
rr=rr+r(j,:);
end;
H=t2f(rr,dt);
%求系统后的码元样本序列
IN=t2f(in,dt);
S=circonv(IN,H,Ns); %序列在频域通过系统,要用循环卷积,因为时域上离散非周期,频域上是周期连续的
% 求卷积后相当于求频域在2*Ns-1个采样点上的值,但还是一个周期
out=f2t(S,dt); %转换到时域
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -