⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channel.m

📁 OFDM实现
💻 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 + -