comm.RayleighChannel()在R2016b开始使用,用来替换了之前的rayleighchan()方法;
一、构造方法:
H = comm.RayleighChannel创建频率选择性或频率平坦的多径瑞利衰落信道系统对象H.该对象通过多径信道过滤实数或复数输入信号以获得信道受损信号。
H = comm.RayleighChannel(Name,Value)创建一个多路径瑞利衰落信道对象H,其指定的属性Name设置为指定的Value。 您可以按任何顺序指定其他名称 - 值对参数(Name1,Value1,...,NameN,ValueN)。
二、属性:
1. SampleRate:输入信号采样速率(Hz)。(以赫兹为单位指定输入信号的采样率,作为双精度,实数,正标量。 此属性的默认值为1 Hz。)
2. PathDelays:多径各路径的时延矢量(秒)。(以秒为单位指定离散路径的延迟,作为双精度,实数,标量或行向量。 此属性的默认值为0。
将PathDelays设置为标量时,通道频率为平坦。
将PathDelays设置为矢量时,通道是频率选择的)
3. AveragePathGains:多径各路径的平均信道增益矢量(dB)。(以分贝为单位指定离散路径的平均增益,作为双精度,实数,标量或行向量。 此属性的默认值为0。
AveragePathGains必须与PathDelays具有相同的大小。)
4. NormalizePathGains:将平均路径增益归一化为0 dB。(将此属性设置为true可规范化衰落过程,使得路径增益的总功率(随时间平均)为0 dB。 此属性的默认值为true。)
5. MaximumDopplerShift: 最大多普勒频移(Hz)。(以赫兹为单位指定所有通道路径的最大多普勒频移,作为双精度,实数,非负标量。 此属性的默认值为0.001 Hz。
多普勒频移适用于信道的所有路径。 将MaximumDopplerShift设置为0时,通道对整个输入保持静态。 您可以使用reset方法生成新的通道实现。
对于每条路径,MaximumDopplerShift必须小于SampleRate / 10 / fc,其中fc表示路径的截止频率因子。 对于大多数多普勒频谱类型,fc的值为1.对于高斯和BiGaussian多普勒频谱类型,fc取决于多普勒频谱结构字段。 有关如何定义fc的更多详细信息,请参阅截止频率因子。)
6. DopplerSpectrum:多普勒频谱对象(s)(为通道的路径指定多普勒频谱形状。该属性接受从多普勒函数返回的单个多普勒频谱结构或这种结构的行单元阵列。指定多普勒频谱/频谱所需的最大多普勒频移值由MaximumDopplerShift属性给出。当MaximumDopplerShift属性值大于0时,此属性适用。此属性的默认值为doppler('Jakes')。
如果为DopplerSpectrum分配单个多普勒频谱结构,则所有路径都具有相同的指定多普勒频谱。如果FadingTechnique属性是正弦曲线的和,DopplerSpectrum必须是doppler('Jakes');否则,请从以下选择:
doppler('Jakes')
doppler('Flat')
doppler('Rounded', ...)
doppler('Bell', ...)
doppler('Asymmetric Jakes', ...)
doppler('Restricted Jakes', ...)
doppler('Gaussian', ...)
doppler('BiGaussian', ...)
如果将不同多普勒频谱结构的行单元阵列(可以从前面列表中的任何一个中选择)分配给DopplerSpectrum,则每个路径都具有由单元阵列中的相应结构指定的多普勒频谱。在这种情况下,DopplerSpectrum的长度必须等于PathDelays的长度。
要生成C代码,请将此属性指定为单个多普勒频谱结构。此属性的默认值为doppler('Jakes')。
)
7. FadingTechnique:用于对信道建模的衰落技术。(在滤波高斯噪声和正弦曲线之和之间进行选择,以指定通道建模的方式。 默认值为Filtered Gaussian noise。)
8. NumSinusoids:用于模拟衰落过程的正弦曲线的数量。(NumSinuoids属性是一个正整数标量,它指定了在建模通道时使用的正弦曲线的数量,仅当FadingTechnique属性设置为正弦曲线的总和时才可用。 默认值为48。)
9. InitialTimeSource:用于衰落过程开始时间的源。(将初始时间源指定为Property或Input端口。 当FadingTechnique属性设置为正弦曲线之和时,此属性可用。 当InitialTimeSource设置为Input端口时,使用INITIALTIME输入到step函数指定衰落过程的开始时间。 输入值可以在对步进功能的连续调用中改变。 默认值为Property。)
10. InitialTime:衰落过程的初始时间(s)(将衰落过程的时间偏移指定为以秒为单位的实际非负标量。 当FadingTechnique属性设置为正弦曲线的Sum并且InitialTimeSource属性设置为Property时,此属性适用。 默认值为0。
InitialTime必须大于最后一帧结束时间。 当InitialTime不是1 / SampleRate的倍数时,它会向上舍入到最近的样本位置。)
11. RandomStream:随机数流作为源。(将随机数流的来源指定为Global stream |之一 mt19937ar与种子。 此属性的默认值为Global stream。
如果将RandomStream设置为Global stream,则当前的全局随机数流用于正态分布的随机数生成。 在这种情况下,重置方法仅重置过滤器。
如果使用种子将RandomStream设置为mt19937ar,则mt19937ar算法将用于正态分布的随机数生成。 在这种情况下,重置方法不仅重置过滤器,还将随机数流重新初始化为Seed属性的值。)
12. Seed:mt19937ar随机数流的初始种子。(将mt19937ar随机数生成器算法的初始种子指定为双精度,实数,非负整数标量。 此属性的默认值为73.当您将RandomStream属性设置为带种子的mt19937ar时,此属性适用。 Seed在重置方法中重新初始化mt19937ar随机数流。)
13. PathGainsOutputPort:是否启用信道可视化。(指定要显示为Off |之一的通道可视化类型 冲动响应| 频率响应| 脉冲和频率响应| 多普勒频谱。 此属性的默认值为Off。)
14. SamplesToDisplay:指定要显示的样本百分比(您可以指定要显示的样本百分比,因为显示较少的样本将导致更好的性能,但代价是精度较低。 将属性指定为10%|之一 25%| 50%|100%。 当可视化设置为脉冲响应,频率响应或脉冲和频率响应时,这适用。 默认值为25%。)
15. PathsForDopplerDisplay:指定多普勒显示的路径。(您可以指定一个整数标量,用于选择构建多普勒频谱图时使用的离散路径。 指定的路径必须是{1,2,...,Np}的元素,其中Np是对象中指定的每个链接的离散路径的数量。 当可视化设置为多普勒频谱时,此属性适用。 默认值为1。)
三、方法:
1. info:显示有关RayleighChannel对象的信息
2. reset:重置RayleighChannel对象的状态。
3. step:通过多径瑞利衰落信道滤波输入信号。
4. release:允许对系统属性的值修改。
(源码)示例1 - 使用两种不同的随机数生成方法生成相同的输出
pskModulator = comm.PSKModulator;
channelInput = pskModulator(randi([0 pskModulator.ModulationOrder-1],1024,1));
rayChan = comm.RayleighChannel(...
'SampleRate',10e3, ...
'PathDelays',[0 1.5e-4], ...
'AveragePathGains',[2 3], ...
'NormalizePathGains',true, ...
'MaximumDopplerShift',30, ...
'DopplerSpectrum',{doppler('Gaussian',0.6),doppler('Flat')}, ...
'RandomStream','mt19937ar with seed', ...
'Seed',22, ...
'PathGainsOutputPort',true);
[chanOut1,pathGains1] = rayChan(channelInput);
release(rayChan);
rayChan.RandomStream = 'Global stream';
rng(22)
[chanOut2,pathGains2] = rayChan(channelInput);
isequal(chanOut1,chanOut2) %logical 1
isequal(pathGains1,pathGains2) %logical 1
结果为;
(源码)示例2-显示瑞利信道的脉冲和频率响应:
fs = 3.84e6; % Hz
pathDelays = [0 200 800 1200 2300 3700]*1e-9; % sec
avgPathGains = [0 -0.9 -4.9 -8 -7.8 -23.9]; % dB
fD = 50;
rchan = comm.RayleighChannel('SampleRate',fs, ...
'PathDelays',pathDelays, ...
'AveragePathGains',avgPathGains, ...
'MaximumDopplerShift',fD, ...
'Visualization','Impulse and frequency responses');
x = randi([0 1],1000,1);
y = rchan(x);
结果:
源码示例三、使用正弦波总和技术生成瑞利信道:
fs = 1000; % Sample rate (Hz)
pathDelays = [0 2.5e-3]; % Path delays (s)
pathPower = [0 -6]; % Path power (dB)
fD = 5; % Maximum Doppler shift (Hz)
numSamples = 1000; % Number of samples
rchan = comm.RayleighChannel('SampleRate',fs, ...
'PathDelays',pathDelays,'AveragePathGains',pathPower, ...
'MaximumDopplerShift',fD,'FadingTechnique','Sum of sinusoids')
y = rchan(ones(numSamples,1));
t = (0:numSamples-1)'/fs;
plot(t,20*log10(abs(y)))
xlabel('Time (s)')
ylabel('Amplitude')
结果: