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

📄 mul_ralay_channel.m

📁 详细介绍OFDM仿真过程,包括信源的产生,信道的加入,编码解码以及LS,MMSE,SVD三种信道估计方法
💻 M
字号:
% 该程序用来模拟信号通过多经瑞利信道
function [r_sig]=mul_ralay_channel(previous_block,signal,Ts,block_index)
% [r_sig]=mul_ralay_channel(revious_block,signal,Ts,block_index)
%该函数用来产生一个频率选择性的多经瑞利衰落信道,从而实现对信号通过时域的多经瑞利衰落无线信道的仿真。
%previous_block:相对于当前数据包的上一个数据包 
% signal:输入的复信号序列,即OFDM调制输出信号,格式为1×n的向量
% Ts:抽样时间间隔 单位是s   
% block_index:当前数据包的序列号
% r_signal:经过信道后的输出信号,即接收信号

%输入参量的判断
if nargin~=4 
	error('input arguments are not matched ');
end
%% v: 移动终端的移动速度  单位为km/h
v=300/3.6;
%载波频率
fc=0;
%mul_path:多经的数目    
mul_path=6;  
rand('state',100);
seed=rand(1,6)*10000;  
% 各条径的传输时延,为1×n(n=mul_path)的向量 TU model
delay=10^(-9)*[0,310,710,1090,1730,2510];
% 信号相对第一条路径的相对功率,为1×n(n=mul_path)的向量,其与时延delay是一一对应关系
relative_power=[0,-1,-9,-10,-15,-20];
% normal:功率是否归一化的标志,normal=1,则relative_power为归一化功率,否则为实际通过此径的信号功率
normal=1;
%信号通过信道时的相对幅度值
Am=sqrt(10.^(0.1*relative_power));
%判断功率是否归一化
if normal==1
	Am=Am./sqrt(sum(Am.^2));
end
%输入数据包的长度
M=length(signal);
%超出输出序列长度的那段数据长度
m_max=floor(max(delay)/Ts);
%初始化输出序列为1×n的零序列
r_sig=zeros(1,M);
output=zeros(1,M);
%初始化经过多经后的完整输出信号
resig=zeros(1,(M+m_max));
%对下一个数据包产生的干扰部分
r_sig_add=zeros(1,m_max);
%%%%%%%%%%%%%%%%%$$$$$$$$计算上一个数据包的信道输出序列$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%
sig_processing=previous_block;
 
%选择一个随机时间做起始时间,以满足统计特性
if(block_index==1)
	n=0;        
else 
	n=(block_index-2)*M;
end
t=[n:1:(n+M+m_max)];
t=t*Ts;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生多经非相关瑞利衰落过程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:mul_path
	%计算第k条路径的信道冲激响应函数
	h=Jakes_gen(v,fc,t,seed(k));	                 
	%将时延转换为时域上的抽样点
	m=floor(1+delay(k)/Ts);
    	%乘相对幅度值
	h=h*Am(k);
    %得到经过第k径的输出序列             
    resig(m:(m+M-1))=resig(m:(m+M-1))+sig_processing.*h(m:(m+M-1));       
end
%对当前数据包的干扰部分
r_sig_add=resig((M+1):(M+m_max));

%%%%%%%%%%%%%%%%%$$$$$$$$计算当前数据包的信道输出序列$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %初始化经过多经后的完整输出信号
resig=zeros(1,(M+m_max));
sig_processing=signal;
%找到与当前数据包对应的信道数据文件中的位置
n=(block_index-1)*M;
t=[n:1:(n+M+m_max)];
t=t*Ts;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生多经非相关瑞利衰落过程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:mul_path
	%计算第k条路径的信道冲激响应函数
	h=Jakes_gen(v,fc,t,seed(k));	                 
    	%将时延转换为时域上的抽样点
	m=floor(1+delay(k)/Ts);
    	%乘相对幅度值
	h=h*Am(k);
    	%得到经过第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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -