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

📄 nbhf_channel.m

📁 基于watterson信道模型的matlab程序
💻 M
字号:
% 2008年3月9日
% 本程序对应短波窄带信道
% 本程序采用滤波器法
function y_t = NBHF_channel(x_t,T_s,condition)
% 信道采样间隔:
% 单位为ms
T_s = 0.1;
Fs = 1/T_s;
% 时间偏移
t_0 = 0;
% seed为线型同余法产生均匀分布随机数的种子
seed =1;
% Shape Quality Constant KQUAL=1.4 (larger the constant, the better the match)
K_qual = 1.5;  
% 根据选择的信道类型确定信道特性参数,共10种信道环境
[Doppler_spread,Doppler_shift,Delay] = channel_para(condition);
% 将延时转换为延时位数
delay = round(Delay/T_s);
% FIR Length
N = ceil(K_qual*Fs/(Doppler_spread*2))+1; 
% 计算输出数据长度
DATA = length(x_t);
t = [0:DATA-1]*T_s;
% 计算Gaussian滤波器系数
h = coef_gaussian_filter(Doppler_spread*2,T_s,N);

rand_init(seed);    % 为线型同余法产生随机数进行初始化,可根据程序的不同改变其位置
for k = 1:2
% 产生高斯分布白噪声序列
    rand_uni1 = rand1(1,DATA);
    rand_uni2 = rand2(1,DATA);
% Box-Muller变换
    rand_g1 = sqrt(-2*log(rand_uni1)).*cos(2*pi*rand_uni2);
    rand_g2 = sqrt(-2*log(rand_uni1)).*sin(2*pi*rand_uni2);
    rand_g = rand_g1+j*rand_g2;
    rand_g = rand_g*sqrt(0.5);
    randnums(:,k) = FIR_filter(h,rand_g).*exp(i*2*pi*Doppler_shift*t);
end
ht = sqrt(0.5)*randnums;

% 产生两路信号,一路为输入信号,一路为输入信号的延时
x_t1 = x_t;
x_t2 = [zeros(1,delay),x_t(delay+1:end)];
% 计算输出信号
y1 = x_t1.*ht(:,1)';
y2 = x_t2.*ht(:,2)';
y_t = y1+y2;

⌨️ 快捷键说明

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