?? mul_ralay_channel.m
字號(hào):
% 該程序用來模擬信號(hào)通過多經(jīng)瑞利信道
function [r_sig]=mul_ralay_channel(previous_block,signal,Ts,block_index)
% [r_sig]=mul_ralay_channel(revious_block,signal,Ts,block_index)
%該函數(shù)用來產(chǎn)生一個(gè)頻率選擇性的多經(jīng)瑞利衰落信道,從而實(shí)現(xiàn)對(duì)信號(hào)通過時(shí)域的多經(jīng)瑞利衰落無線信道的仿真。
%previous_block:相對(duì)于當(dāng)前數(shù)據(jù)包的上一個(gè)數(shù)據(jù)包
% signal:輸入的復(fù)信號(hào)序列,即OFDM調(diào)制輸出信號(hào),格式為1×n的向量
% Ts:抽樣時(shí)間間隔 單位是s
% block_index:當(dāng)前數(shù)據(jù)包的序列號(hào)
% r_signal:經(jīng)過信道后的輸出信號(hào),即接收信號(hào)
%輸入?yún)⒘康呐袛?if nargin~=4
error('input arguments are not matched ');
end
%% v: 移動(dòng)終端的移動(dòng)速度 單位為km/h
v=300/3.6;
%載波頻率
fc=0;
%mul_path:多經(jīng)的數(shù)目
mul_path=6;
rand('state',100);
seed=rand(1,6)*10000;
% 各條徑的傳輸時(shí)延,為1×n(n=mul_path)的向量 TU model
delay=10^(-9)*[0,310,710,1090,1730,2510];
% 信號(hào)相對(duì)第一條路徑的相對(duì)功率,為1×n(n=mul_path)的向量,其與時(shí)延delay是一一對(duì)應(yīng)關(guān)系
relative_power=[0,-1,-9,-10,-15,-20];
% normal:功率是否歸一化的標(biāo)志,normal=1,則relative_power為歸一化功率,否則為實(shí)際通過此徑的信號(hào)功率
normal=1;
%信號(hào)通過信道時(shí)的相對(duì)幅度值
Am=sqrt(10.^(0.1*relative_power));
%判斷功率是否歸一化
if normal==1
Am=Am./sqrt(sum(Am.^2));
end
%輸入數(shù)據(jù)包的長度
M=length(signal);
%超出輸出序列長度的那段數(shù)據(jù)長度
m_max=floor(max(delay)/Ts);
%初始化輸出序列為1×n的零序列
r_sig=zeros(1,M);
output=zeros(1,M);
%初始化經(jīng)過多經(jīng)后的完整輸出信號(hào)
resig=zeros(1,(M+m_max));
%對(duì)下一個(gè)數(shù)據(jù)包產(chǎn)生的干擾部分
r_sig_add=zeros(1,m_max);
%%%%%%%%%%%%%%%%%$$$$$$$$計(jì)算上一個(gè)數(shù)據(jù)包的信道輸出序列$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%
sig_processing=previous_block;
%選擇一個(gè)隨機(jī)時(shí)間做起始時(shí)間,以滿足統(tǒng)計(jì)特性
if(block_index==1)
n=0;
else
n=(block_index-2)*M;
end
t=[n:1:(n+M+m_max)];
t=t*Ts;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%產(chǎn)生多經(jīng)非相關(guān)瑞利衰落過程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:mul_path
%計(jì)算第k條路徑的信道沖激響應(yīng)函數(shù)
h=Jakes_gen(v,fc,t,seed(k));
%將時(shí)延轉(zhuǎn)換為時(shí)域上的抽樣點(diǎn)
m=floor(1+delay(k)/Ts);
%乘相對(duì)幅度值
h=h*Am(k);
%得到經(jīng)過第k徑的輸出序列
resig(m:(m+M-1))=resig(m:(m+M-1))+sig_processing.*h(m:(m+M-1));
end
%對(duì)當(dāng)前數(shù)據(jù)包的干擾部分
r_sig_add=resig((M+1):(M+m_max));
%%%%%%%%%%%%%%%%%$$$$$$$$計(jì)算當(dāng)前數(shù)據(jù)包的信道輸出序列$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%
%初始化經(jīng)過多經(jīng)后的完整輸出信號(hào)
resig=zeros(1,(M+m_max));
sig_processing=signal;
%找到與當(dāng)前數(shù)據(jù)包對(duì)應(yīng)的信道數(shù)據(jù)文件中的位置
n=(block_index-1)*M;
t=[n:1:(n+M+m_max)];
t=t*Ts;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%產(chǎn)生多經(jīng)非相關(guān)瑞利衰落過程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:mul_path
%計(jì)算第k條路徑的信道沖激響應(yīng)函數(shù)
h=Jakes_gen(v,fc,t,seed(k));
%將時(shí)延轉(zhuǎn)換為時(shí)域上的抽樣點(diǎn)
m=floor(1+delay(k)/Ts);
%乘相對(duì)幅度值
h=h*Am(k);
%得到經(jīng)過第k徑的輸出序列
resig(m:(m+M-1))=resig(m:(m+M-1))+sig_processing.*h(m:(m+M-1));
end
r_sig=r_sig+resig(1:M);
r_sig(1:m_max)=r_sig(1:m_max)+r_sig_add;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -