matlab里用rayleighchan函数仿真多径信道的系统函数怎么得到

matlab里用rayleighchan函数仿真多径信道的系统函数怎么得到,第1张

一个生成多径信道函数,信道的每一径的衰落都独立的服从Rayleigh分布

chan = rayleighchan(Ts,fd,tau,pdb)

Ts:采样时间,如果考虑基带信号,这个和接收机要处理的数据速率是一样的,要考虑过采样的影响

fd:就是Doppler频偏,以Hz为单位,与速率的换算关系为v×fc/c,fc是载频

tau:输入的信道参数,一个向量,包含了各径的延时,以s为单位

pdb:输入的信道参数,一个向量,包含了各径的功率(当然是均值啦,实际产生的能量都是以此为均值的随机量),以dB为单位

这两天仿真的时候突然发现了一个奇怪的现象,输入参数之后产生信道chan,与一个冲激函数卷积应该得到的是信道响应h,各径的位置应该是round(tau/Ts)才对,但事实上不完全是这样:在采样率Ts较小的时候,能量较强的几个径的位置整体滞后n个样点,而在采样率较高的时候不会出现这个问题。最后发现问题在于rayleighchan函数生成信道的过程实际是设计一个多抽头的滤波器,而滤波器的系数计算是多个sinc函数加权、延时后的求和:

g(n)=\sum_k{ sinc( tau(k)/Ts-n) h(k) },-N1<=n<=N2

其中N1和N2的选取要使得在-N1<=n<=N2之外的g(n)很小可忽略。

如果采样率较小,Ts较大,则sinc函数衰减较慢,因此第一径对应的sinc的能量泄露不可以忽略(N1>0),

即生成滤波器系数的时候把第一径左边的泄露量保留,整个信道相应看起来就有个时延了……

说白了,rayleighchan函数的实现步骤是这样的:

1) h(k)看作是一串冲激函数,与sinv函数卷积,sinc函数的边瓣周期由输入参数采样时间Ts决定,如果看连续时间波形的话,整个信道响应就是多个不同时延、不同幅度的sinc函数的叠加;

2) 对这个连续的信道响应进行采样得到信道滤波器的抽头系数,采样间隔为Ts,而采样点的个数是要保证舍弃位置的信道响应足够小可以忽略,如果采样率过小则Ts较大衰减慢, 需要保存较多个抽头系数,此时很可能在第一径位置之前出现若干个信道采样点,即h(n)~=0, n<0;

3)输入信号(以Ts为间隔的采样点)与滤波器进行卷积输出(filter函数的作用)

其实 MATLAB里面有直接定义三角波的函数的

就是 sawtooth(t,width) 其用法跟sin(t)差不多

比方说你的条件是x=1-abs(t)  (-2<t<2)

下面是代码:

clear all

clc

t=-4:001:4;

f=sawtooth(1/2pi(t+2),05);

plot(t,f);

grid on;

最后附上一些函数吧

特殊函数

boxcar()  矩形窗

triang()    三角窗

tripuls() 非周期三角脉冲

sawtooth()   锯齿波

rectpuls() 非周期矩形脉冲

square()    方波

sinc()     sinc函数

diric()    冲击函数

以上就是关于matlab里用rayleighchan函数仿真多径信道的系统函数怎么得到全部的内容,包括:matlab里用rayleighchan函数仿真多径信道的系统函数怎么得到、matlab 中如何定义周期函数、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9609497.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存