📄 mul_channel.m
字号:
function output_sig=mul_channel(input_sig,num,a,delay,fd)
%input_sig输入信号矩阵,加了cp后的信号,大小为NL×(子载波个数+cp长度lp)[144*120];
%num多径数;
%var_pow各径相对主径的平均功率,单位dB;
%delay各径延时,单位s;
%fd最大dopple频率;
%t_interval为离散信道抽样时间间隔,等于OFDM符号长度/(子载波个数+cp长度lp);
%output_sig为经过多径信道的输出信号矢量
%counter各径间隔记录
%count_begin本次产生信道开始记录的初始位置
T=1;
X7=[];
X7=reshape(input_sig,1,144*120);
h=zeros(1,144);
hh=[];
for k=1:num
%deta=[zeros(1,d(k)-1),1,zeros(1,carrier_count-d(k))]
h1=a(k)*exp(j*((2*pi*T*fd*delay(k)/144)));
%h1=a(k)*exp(j*((2*pi*T*fd*d(k)/144)));
hh=[hh,h1];
end
h(d+1)=hh;
%noise=randn(1,length(X7))+j.*randn(1,length(X7));
%--------------------------------------------------------
channel1=zeros(size(X7));
channel1(1+d(1):length(X7))=hh(1)*X7(1:length(X7)-d(1));
channel2=zeros(size(X7));
channel2(1+d(2):length(X7))=hh(2)*X7(1:length(X7)-d(2));
channel3=zeros(size(X7));
channel3(1+d(3):length(X7))=hh(3)*X7(1:length(X7)-d(3));
channel4=zeros(size(X7));
channel4(1+d(4):length(X7))=hh(4)*X7(1:length(X7)-d(4));
channel5=zeros(size(X7));
channel5(1+d(5):length(X7))=hh(5)*X7(1:length(X7)-d(5));
%channel6=zeros(size(X7));
%channel6(1+d(6):length(X7))=hh(6)*X7(1:length(X7)-d(6));
%---------------------------------------------------------------
XX=X7+channel1+channel2+channel3+channel4;
output_sig=reshape(XX,120,144).';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -