我是靠谱客的博主 怕孤独衬衫,这篇文章主要介绍衰落信道知识,现在分享给大家,希望可以做个参考。

1.  MATLAB ToolBox中衰落信道的介绍http://cn.mathworks.com/help/comm/ug/fading-channels.html#a1071598663b1

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975

使用对象实现衰落信道

使用对象实现的多路径传播方案的基带通道模型包括:

  • N离散衰落路径, 每个都有自己的延迟和平均功率增益。一个信道, N = 1 称为频率平坦衰落通道一个信道, N > 1 作为一个频率选择衰落信道 , 其信号具有足够宽的带宽。

  • 每个路径的瑞利或斯模型。

  • 使用杰克斯多普勒频谱的默认通道路径建模, 可以指定最大多普勒频移。其他类型的多普勒频谱允许 (相同或不同的所有路径) 包括: 扁平, 限制杰克斯, 不对称杰克斯, 高斯, 双高斯, 圆形, 和钟。

    如果在通道对象的构造过程中将最大多普勒频移设置为0或省略, 则对象将信道建模为静态。对于这种配置, 衰落不随时间而变化, 并且所指定的多普勒频谱对衰落过程没有影响。

有关延迟和增益的典型值的一些附加信息在选择实际信道属性值.

使用块实现衰落信道

信道块库包括可在移动通信中模拟真实世界现象的 MIMO 和单输入衰落块。这些现象包括多径散射效应, 以及发射机和接收机之间的相对运动引起的多普勒位移。

提示

要对衰落和加法白高斯噪声的信道进行建模, 请使用与 AWGN 信道块串联在一起的衰落信道块, 其中衰落信道块最先出现。

可以将 MIMO 信道和单输出 衰落信道块设置为模型的信道的瑞利或斯衰落分布。根据信号路径的类型选择要使用的衰落分布。

信号路径褪色分布
从发射机到接收机的直接视线路径Rician
从发射机到接收机的一个或多个主要反射路径Rayleigh

在多个主要反射路径的情况下, 为瑞利衰落分布配置的衰落信道块的单个实例可以同时对它们进行建模。

为您的情况选择适当的块参数是很重要的。有关更多信息, 请参见选择实际信道属性值, 以及 MIMO 衰落通道和单输出衰落信道阻止参考页。

可视化衰落信道

您可以使用通道可视化工具查看衰落信道的特征。有关更多信息, 请参见频道可视化.

补偿褪色响应

涉及衰落信道的通信系统通常需要组件 (s) 来补偿衰落响应。弥补衰落的典型方法包括:

  • 差分调制或单抽头均衡器有助于补偿频率平坦衰落信道。有关实现差分调制的信息, 请参见 M-DPSK 调制器基带块引用页。

  • 带有多个分路器的均衡器有助于补偿频率选择性衰落信道。有关更多信息, 请参见均衡。

与自适应均衡的通信链接示例说明了为什么需要对衰落信道进行补偿。

单输出多径衰落信道的仿真方法

通信系统中的瑞利和斯多径衰落信道模拟器 Toolbox™在[1]中使用 9.1. 3.5. 2 的带限制的离散多路径信道模型。此实现假定延迟电源配置文件和信道的多普勒频谱是可分离的[1]。因此, 多径衰落信道被建模为线性有限冲激响应 (FIR) 滤波器。{s}表示输入到通道的样本集。然后样品{y}通道的输出与{s}通过:

y=n2n=n1sngn

{gn}是由以下值给定的分路权重集:

gn=kk=1一个ksinc[τktsn]n1nn2

在上述方程式中:

  • ts为通道的输入采样周期。

  • {τk}, 在1kk, 是路径延迟的集合。K是多路径衰落信道中的路径总数。

  • {一个k}, 在1kk, 是多径衰落信道的复杂路径增益集。这些路径增益是相互不相关的。

  • n1n2的选择, 以便gnn小于n1或大于n2.

两种技术, 过滤高斯噪声和 sum-of-sinusoids, 被用来生成一组复杂的路径增益,一个k.

每个路径增益过程一个k由以下步骤生成:

滤波高斯噪声技术

  1. 在离散时间内, 生成了具有零均值和单位方差的复杂不相关 (白) 高斯过程。

  2. 用多普勒滤波器对复高斯过程进行频率响应滤波h(f)=gs(f), 在s(f)表示所需的多普勒功率谱。

  3. 对滤波的复高斯过程进行插值, 使其采样周期与输入信号相一致。使用线性和多相插值的组合。

Sum-of-sinusoids 技术

  1. 使用[2]中描述的方法生成相互不相关的瑞利衰落波形, 其中 i = 1对应于相分量, i = 2对应于正交分量。

    zk(t)μ()k(t)=μ(1)k(t)+jμ(2)k(t),k=1,2,...,k=g2nknkn=1因为(2πf()k,nt+θ()k,n),=1,2

    • nk指定用于对单个路径建模的窦的数量。

    • f()k,n是离散多普勒频率, 并计算在单个路径中的每个正弦分量。

    • θ()k,n的阶段是n成分的μ()k是一个分布的随机变量, 在区间上具有均匀分布(0,2π].

    • t是淡入淡出的进程时间。


    当建模一个杰克斯多普勒频谱, 离散多普勒频率,f()k,n, 最大移位f最大是由

    f()k,n=f最大因为(α()k,n)=f最大因为[π2nk(n12)+α()k,0]

    α()k,0(1)1π4nkkk+2,=1,2k=1,2,...,k

  2. 为了提前时间的衰落过程, 一个初始的时间参数,t初始, 介绍了。衰落波形成为

    μ()k(t)=g2nknkn=1因为(2πf()k,n(t+tnt)+θ()k,n),=1,2

    t初始= 0, 衰落过程从时间零开始。的正值t初始在保持它的连续性的同时, 推进衰落过程相对于时间零。

  3. 使用 GMEDS 生成信道衰落样本1 [2]算法。

计算复杂系数

由任一技术造成的复杂过程,zk, 进行缩放以获得正确的平均路径增益。在瑞利信道的情况下, 衰落过程获得如下:

一个k=gωkzk

ωk=e[一个k2]

在斯通道的情况下, 衰落过程获得如下:

一个k=gωk[zkgk研发,k+1+gk研发,kk研发,k+1ej(2πfd,i/os,kt+θi/os,k)]

k研发,k是 k-th 路径的斯 k 因子,fd,i/os,k是 k 次路径的视线分量的多普勒变换 (赫兹),θi/os,k是 k 次路径的视线分量的初始相位 (在 rad 中)。

在输入到带限制的多径信道模型中, 传输的符号必须由至少等于脉冲整形引入的带宽扩展因子的因子取样。例如, 如果使用 sinc 脉冲整形, 其中脉冲形信号的带宽等于符号速率, 则带宽扩展因子为 1, 在输入到通道时需要至少一个每个符号的采样。如果使用超过1的因数的凸起余弦 (RC) 滤波器, 其脉冲形状信号的带宽等于符号速率的两倍, 则带宽扩展因子为 2, 在输入到通道时, 每个符号至少需要两个样本。

有关其他信息, 请参见文章基于 matlab 的面向对象的多路径衰落信道仿真方法, 位于 MATLABCentral。

引用

[1] Jeruchim,., 巴拉班, P., 并且 Shanmugan, k.s,通信系统的模仿, 再版, 纽约, Kluwer 学术或充满, 2000。

[2] Pätzold, Matthias, 程湘王, 比 Olav Hogstand。"两个新的基于 Sum-of-Sinusoids 的方法, 有效生成多不相关的瑞利衰落波形。无线通信的 IEEE 事务Vol. 8, 数字 6, 2009, pp. 3122–3131。

指定衰落信道

通信系统工具箱将衰落信道建模为线性 FIR 滤波器。使用衰落通道筛选信号包括以下步骤:

  1. 创建一个用于描述要使用的信道的信道对象。信道对象是一种 MATLAB 变量, 它包含有关信道的信息, 如最大多普勒频移。

  2. 调整通道对象的属性 (如有必要), 以根据需要进行定制。例如, 您可以更改路径延迟或平均路径增益。

  3. 使用调用对象将信道对象应用于您的信号。

本节介绍如何定义、检查和操作通道对象。这些主题是:

  • 创建通道对象

  • 复制和复制对象

  • 显示和更改对象属性

  • 通道对象属性之间的关系

创建通道对象

选择这些系统对象之一, 以创建适合您的建模情况的衰落通道对象。

功能对象情况模型

comm.RayleighChannel

瑞利衰落信道对象一个或多个主要的反射路径

comm.RicianChannel

斯衰落信道对象一个直接的视线路径, 可能与一个或多个主要的反射路径结合

例如, 下面的命令创建一个信道对象, 它表示一个在 10万 Hz 采样的信号上作用的瑞利衰落信道。该通道的最大多普勒频移是130赫兹。

复制代码
rayChan1 = comm.RayleighChannel('SampleRate',1e5,...
'MaximumDopplerShift',130); % Rayleigh fading channel object

若要了解如何调用rayChan1淡入淡出通道对象以通过通道筛选传输的信号, 请参阅使用衰落通道.

复制和复制对象

创建对象的另一种方法是复制现有对象, 然后根据需要调整新对象的属性。如果这样做, 则使用copy命令很重要, 如

复制代码
rayChan2 = copy(rayChan1); % Copy rayChan1 to create an independent rayChan2.

而不是rayChan2 = rayChan1copy命令创建一个独立于rayChan1rayChan1副本。相比之下, 命令rayChan2 = rayChan1只创建rayChan2作为对rayChan1的引用, 因此rayChan1rayChan2始终具有无法区分的内容。

显示和更改对象属性

信道对象具有许多记录有关信道模型的信息的属性, 其中关于已筛选信号的信道的状态, 以及有关信道对未来信号的操作。

可以通过下列方式查看属性:

  • 若要查看通道对象的所有属性, 请在命令窗口中输入对象的名称。

  • 若要查看信道对象的特定属性或将该属性的值赋给某个变量, 请输入该对象的名称, 后跟一个点 (句点), 后跟该属性的名称。

可以通过以下方式更改信道对象的可写属性:

  • 若要更改信道对象属性的默认值, 请在对象创建语法中输入所需的值。

  • 若要更改通道对象的可写属性的值, 请发出在信道对象上使用点表示法的分配语句。更具体地说, 点表示法是指由对象名称组成的表达式, 后跟一个点, 后跟该属性的名称。

显示瑞利通道对象属性

创建一个瑞利通道对象。显示对象以显示默认情况下初始化的属性以及在创建对象时指定的特性。输入rayChan将显示通道对象的所有属性。在创建对象时分配了某些属性值, 而其他属性具有默认值。有关特定信道属性的详细信息, 请参阅 comm.RayleighChannel 对象。

复制代码
rayChan = comm.RayleighChannel('SampleRate',1e5,'MaximumDopplerShift',130);
rayChan % View all the properties
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 100000
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 130
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
g = rayChan.AveragePathGains % Retreive the AveragePathGains property of rayChan
复制代码
g = 0

调整斯通道对象属性

斯衰落信道对象具有一个不为瑞利衰落信道对象 (即标量KFactor属性) 显示的附加属性。有关斯通道属性的详细信息, 请参阅 comm.RicianChannel 对象。

更改斯通道对象属性

创建斯通道对象。Visualization属性的默认设置为'Off'将默认设置更改为'Impulse response'会在调用对象时生成输出信号的脉冲响应图。

复制代码
ricChan= comm.RicianChannel; % Create object
ricChan.Visualization = 'Impulse response' % Enables the impulse response channel visualization
复制代码
ricChan =
comm.RicianChannel with properties:
SampleRate: 1
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
KFactor: 3
DirectPathDopplerShift: 0
DirectPathInitialPhase: 0
MaximumDopplerShift: 1.0000e-03
DopplerSpectrum: [1x1 struct]
Show all properties

输出显示通道对象所有属性的子集。选择all properties可查看ricChan的完整属性集.

通道对象属性之间的关系

信道对象的某些属性彼此相关, 这样, 当一个属性的值发生变化时, 另一个属性的值必须以某种相应的方式更改, 以保持通道对象的一致性。例如, 如果更改PathDelays的向量长度, 则AveragePathGains的值必须更改, 以便其向量长度等于PathDelays的新值。这是因为两个向量的长度等于信道的离散路径数。有关链接属性和示例的详细信息, 请参见 comm.RayleighChannel  comm.RicianChannel .

参考页。

指定衰落信道的多普勒频谱

信道对象的多普勒频谱通过其DopplerSpectrum属性指定。此属性的值必须为:

  • 多普勒物体。在这种情况下, 相同的多普勒频谱适用于通道对象的每个路径。

  • PathDelays向量属性长度相同的多普勒对象的单元格数组。在这种情况下, 每个路径的多普勒频谱是由相应的多普勒对象在矢量中给出的。

    • 当 PathDelays 属性的向量长度增加时, 通过附加杰克斯多普勒对象, DopplerSpectrum 的长度自动增加以匹配 PathDelays 的长度。

    • 如果 PathDelays 矢量属性的长度减小, 则通过删除最后一个多普勒对象, DopplerSpectrum 的长度会自动减小以匹配 PathDelays 的长度。

多普勒对象包含用于表征多普勒频谱的所有属性, 但最大多普勒频移除外, 这是信道对象的一个特性。本节介绍如何创建和操作多普勒对象, 以及如何将它们分配给信道对象的DopplerSpectrum属性。

创建多普勒对象

要创建多普勒对象, 请使用doppler函数。doppler函数的唯一用途是创建用于指定信道对象的DopplerSpectrum属性值的多普勒对象。

如果将单个多普勒频谱结构分配给 DopplerSpectrum, 则所有路径都具有相同的多普勒频谱。如果 FadingTechnique 属性是'Sum of sinusoids', 则 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 代码, 请将此属性指定给单个多普勒频谱结构。

例如, 一个高斯谱与正常化 (由渠道的最大多普勒位移) 标准偏差 0.1, 可以被创造如下:

复制代码
dopp1 = doppler('Gaussian',0.1);

重复多普勒对象

与通道对象的情况一样, 多普勒对象可以使用copy函数进行复制。该命令:

复制代码
dopp2 = copy(dopp1);

创建具有与dopp1相同属性的多普勒对象dopp2 。dopp1dopp2分别是多普勒对象的单独实例, 因为修改二者中的一个不会影响另一个。如果使用dopp1 = dopp2 , 则会导致dopp1dopp2引用多普勒对象的同一实例, 因为修改任何一个都将导致对另一项的相同修改。

查看和更改多普勒对象属性

查看和更改多普勒对象属性的语法与通道对象的大小写相同 (请参阅显示和更改对象属性).

创建、更改和查看多普勒对象

创建并显示一个具有默认属性的圆角多普勒对象, 并修改其Polynomial属性的第三个元素。

复制代码
doppRound = doppler('Rounded')
复制代码
doppRound = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.7200 0.7850]

调整多项式的第三系数。

复制代码
doppRound.Polynomial(3) = 0.825
复制代码
doppRound = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.7200 0.8250]

所有多普勒对象共有的属性SpectrumType是只读的。它在对象构造中自动指定, 无法修改。如果你想使用不同的多普勒频谱类型, 你需要创建一个新的多普勒对象的期望类型。

在通道对象中使用多普勒对象

信道对象的DopplerSpectrum属性可以通过向它分配多普勒对象或多普勒对象的向量来更改。

用平坦多普勒频谱创建瑞利信道

此示例阐释如何将构造的瑞利通道对象的默认杰克斯多普勒频谱更改为平面多普勒频谱:

创建瑞利通道对象

将采样速率设置为 9600 hz, 最大多普勒 shfit 为100赫兹。

复制代码
rayChan = comm.RayleighChannel('SampleRate',9600, 'MaximumDopplerShift',100)
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 9600
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 100
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
rayChan.DopplerSpectrum
复制代码
ans = struct with fields:
SpectrumType: 'Jakes'

修改多普勒频谱

创建平面多普勒对象并将其分配到rayChan对象中

复制代码
doppFlat = doppler('Flat')
复制代码
doppFlat = struct with fields:
SpectrumType: 'Flat'
复制代码
rayChan.DopplerSpectrum = doppFlat
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 9600
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 100
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
rayChan.DopplerSpectrum
复制代码
ans = struct with fields:
SpectrumType: 'Flat'

利用高斯多普勒频谱创建斯信道

This example shows how to change the default Jakes Doppler spectrum of a constructed Rician channel object to a Gaussian Doppler spectrum with normalized standard deviation of 0.3, and subsequently display the DopplerSpectrum property, and change the value of the normalized standard deviation to 1.1:

Create a Rician channel object

Set the sample rate to 9600 Hz, the maximum Doppler shfit to 100 Hz, and K factor to 2.

复制代码
ricChan = comm.RicianChannel('SampleRate',9600, 'MaximumDopplerShift',100, 'KFactor',2)
复制代码
ricChan =
comm.RicianChannel with properties:
SampleRate: 9600
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
KFactor: 2
DirectPathDopplerShift: 0
DirectPathInitialPhase: 0
MaximumDopplerShift: 100
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
ricChan.DopplerSpectrum
复制代码
ans = struct with fields:
SpectrumType: 'Jakes'

Modify the Doppler spectrum

Create a Gaussian doppler object with normalized standard deviation of 0.3 and assign it in the ricChan object.

复制代码
doppGaus = doppler('Gaussian',0.3)
复制代码
doppGaus = struct with fields:
SpectrumType: 'Gaussian'
NormalizedStandardDeviation: 0.3000
复制代码
ricChan.DopplerSpectrum = doppGaus
复制代码
ricChan =
comm.RicianChannel with properties:
SampleRate: 9600
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
KFactor: 2
DirectPathDopplerShift: 0
DirectPathInitialPhase: 0
MaximumDopplerShift: 100
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
ricChan.DopplerSpectrum
复制代码
ans = struct with fields:
SpectrumType: 'Gaussian'
NormalizedStandardDeviation: 0.3000
复制代码
ricChan.DopplerSpectrum.NormalizedStandardDeviation = 1.1;
ricChan.DopplerSpectrum
复制代码
ans = struct with fields:
SpectrumType: 'Gaussian'
NormalizedStandardDeviation: 1.1000

Create Rayleigh Channel Using Independent Doppler Spectrum

This example illustrates how to change the default Jakes Doppler spectrum of a constructed three-path Rayleigh channel object to a cell array of different Doppler spectra, and then change the properties of the Doppler spectrum of the third path:

Create a Rayleigh channel object

Set the sample rate to 9600 Hz, the maximum Doppler shfit to 100 Hz, and specify path delays of 01e-4, and 2.1e-4 seconds.

复制代码
rayChan = comm.RayleighChannel('SampleRate',9600, 'MaximumDopplerShift',100, 'PathDelays',[0 1e-4 2.1e-4])
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 9600
PathDelays: [0 1.0000e-04 2.1000e-04]
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 100
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
rayChan.DopplerSpectrum
复制代码
ans = struct with fields:
SpectrumType: 'Jakes'

Modify the Doppler spectrum

Specify the DopplerSpectrum property as a cell array with an independent Doppler spectrum for each path.

复制代码
rayChan.DopplerSpectrum = {doppler('Flat') doppler('Flat') doppler('Rounded')}
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 9600
PathDelays: [0 1.0000e-04 2.1000e-04]
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 100
DopplerSpectrum: {[1x1 struct]
[1x1 struct]
[1x1 struct]}
Show all properties
复制代码
rayChan.DopplerSpectrum{:}
复制代码
ans = struct with fields:
SpectrumType: 'Flat'
复制代码
ans = struct with fields:
SpectrumType: 'Flat'
复制代码
ans = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.7200 0.7850]

Change the Polynomial property for the third path.

复制代码
rayChan.DopplerSpectrum{3}.Polynomial = [1 -1.21 0.7]
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 9600
PathDelays: [0 1.0000e-04 2.1000e-04]
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 100
DopplerSpectrum: {[1x1 struct]
[1x1 struct]
[1x1 struct]}
Show all properties
复制代码
rayChan.DopplerSpectrum{:}
复制代码
ans = struct with fields:
SpectrumType: 'Flat'
复制代码
ans = struct with fields:
SpectrumType: 'Flat'
复制代码
ans = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.2100 0.7000]

Configure Channel Objects

Before you filter a signal using a channel object, make sure that the properties of the channel have suitable values for the situation you want to model. This section offers some guidelines to help you choose realistic values that are appropriate for your modeling needs. The topics are

  • Choose Realistic Channel Property Values

  • Configure Channel Objects Based on Simulation Needs

  • Store Channel State History

The syntaxes for viewing and changing values of properties of channel objects are described in Specifying a Fading Channel.

Choose Realistic Channel Property Values

Here are some tips for choosing property values that describe realistic channels:

Path Delays

  • By convention, the first delay is typically set to zero. The first delay corresponds to the first arriving path.

  • For indoor environments, path delays after the first are typically between 1 ns and 100 ns (that is, between 1e-9 s and 1e-7 s).

  • For outdoor environments, path delays after the first are typically between 100 ns and 10 µs (that is, between 1e-7 s and 1e-5 s). Very large delays in this range might correspond, for example, to an area surrounded by mountains.

  • The ability of a signal to resolve discrete paths is related to its bandwidth. If the difference between the largest and smallest path delays is less than about 1% of the symbol period, then the signal experiences the channel as if it had only one discrete path.

平均路径增益

  • 通道对象中的平均路径增益表示每个衰落路径的平均功率增益。在实际中, 平均路径增益值是一个大的负 dB 值。但是, 计算机模型通常使用-20 db 和 0 db 之间的平均路径增益。

  • 平均路径增益向量中的 dB 值通常呈线性衰减, 但具体的时延分布取决于传播环境。

  • 为了确保路径的期望值为 1, 可以通过通道对象的NormalizePathGains属性规范化路径增益。

最大多普勒位移

  • 一些无线应用, 如标准 GSM (全球移动通信系统), 更喜欢在移动速度方面指定多普勒变化。如果移动速度为v (米/秒), 那么最大多普勒频移计算如下, 其中f是传输载波频率赫兹和c是光速 (3e8 米/秒)。

    fd=vfc

  • 根据这个公式的速度的移动, 在高速公路上的移动汽车的信号可能会经历最大多普勒位移约80赫兹, 而从一个移动的行人的信号可能会经历一个最大的多普勒位移约4赫兹。这些数字假设一个传输载波频率900兆赫。

  • 0的最大多普勒位移对应于来自瑞利或斯分布的静态通道。

斯衰落信道的 k-因子

  • 斯 K 因子指定了直接视距路径的 specular-to-diffuse 功率的比值。比率是线性表达的, 而不是 dB。

  • 对于斯衰落, K 因子通常介于1和10之间。

  • 一个 K 因子0对应于瑞利衰落。

多普勒频谱参数

  • 有关参数及其意义的说明, 请参见有关多普勒对象的doppler参考页。

根据模拟需要配置通道对象

有关配置信道对象以自定义筛选过程的提示:

  • 如果将数据分成一系列向量 (例如, 在循环中处理), 则可以多次调用该信道对象 (在循环中的每个迭代中)。在每次调用后更新和保存通道的状态信息。通道输出与数据的分区方式无关 (向量长度)。

  • 如果希望通道输出可重复, 请为通道对象的RandomStream属性选择种子选项。若要重复输出, 请调用reset对象函数以重置内部筛选器和内部随机数生成器。

  • 如果要对连续传输的数据进行建模, 请将FadingTechnique属性设置为'Sum of sinusoids'InitialTimeSource属性, 以便为通道对象'Input port' 。在调用对象时, 指定每个数据向量/帧的开始时间, 通过输入来处理该通道。

  • 如果要使衰落进程正常化, 以便路径的预期值为 1 (通道不贡献额外的电源增益或损耗), 请将通道对象的NormalizePathGains属性设置为true.

存储通道状态历史记录

默认情况下, 通道对象的PathGains属性存储当前的复杂路径增益向量。

将信道的StoreHistory属性设置为 true 将使其存储最后一个n路径增益向量, 其中n是通过通道处理的向量的长度。下面的代码阐释此属性

复制代码
rayChan = comm.RayleighChannel('SampleRate',100000,'MaximumDopplerShift',130); % Rayleigh channel
tx = randi([0 1],10,1);
% Random bit stream
hmod = comm.DBPSKModulator;
% Create DBPSK Modulator
dpskSig = step(hmod,tx);
% Process data by calling the step method
rayChan.StoreHistory = true;
% Allow states to be stored
y = filter(h, dpskSig);
% Run signal through channel
h.PathGains
% Display the stored path gains data

本示例生成类似于以下内容的输出:

复制代码
 -0.7601 - 1.1853i
-0.7540 - 1.1822i
-0.7480 - 1.1791i
-0.7419 - 1.1759i
-0.7358 - 1.1728i
-0.7298 - 1.1696i
-0.7237 - 1.1665i
-0.7177 - 1.1634i
-0.7115 - 1.1599i
-0.7053 - 1.1565i
复制代码
ans =
0.0788 - 0.5305i

最后一个元素是通道的当前路径增益。

StoreHistory设置为 true 将大大降低信道的筛选器函数的执行速度。

使用淡入淡出的通道

按照指定衰落通道中的说明创建了通道对象后, 可以调用该对象通过信道传递信号。将信号作为输入参数提供给通道对象。在筛选操作结束时, 通道对象将保留其状态, 以便您可以通过调用 info 对象函数作为输入参数来查找最终路径增益或通道已处理的样本总数。

有关演示基本语法和状态保留的示例, 请参见褪色信号的电源.

要使通道的特征可视Visualization, 请将显示属性设置为'Impulse response''Frequency response''Doppler spectrum'有关更多信息, 请参见频道可视化.

可视化三路瑞利通道

这个例子说明了如何可视化信道的脉冲响应。

创建通道对象

在创建通道对象时, 使用名称-值对设置Visualization属性

'Impulse response'.

复制代码
rayChan = comm.RayleighChannel('SampleRate',100000,'MaximumDopplerShift',130,...
'PathDelays',[0 1.5e-5 3.2e-5],'AveragePathGains',[0, -3, -3],...
'Visualization','Impulse response');

生成一个比特流并创建一个调制器对象。调制比特流并通过

通过调用信道对象, 通过信道调制 DBPSK 信号。

复制代码
tx = randi([0 1],500,1);
dbspkMod = comm.DBPSKModulator;
dpskSig = dbspkMod(tx);
y = rayChan(dpskSig);

当调用对象时, 会绘制脉冲响应。


复制代码
1
2
3
4
rayChan = comm.RayleighChannel('SampleRate',10000,'MaximumDopplerShift',100); sig = j*ones(2000,1); % Signal out = rayChan(sig); % Pass signal through channel. rayChan % Display all properties of the channel object.
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
复制代码
rayChan =
comm.RayleighChannel with properties:
SampleRate: 10000
PathDelays: 0
AveragePathGains: 0
NormalizePathGains: true
MaximumDopplerShift: 100
DopplerSpectrum: [1x1 struct]
Show all properties
复制代码
% Plot power of faded signal, versus sample number.
plot(20*log10(abs(out)))

衰落条件下的 DBPSK 经验与理论性能

本示例创建一个频率平坦的瑞利衰落信道对象, 并调用它来处理由单个矢量组成的 DBPSK 信号。对信噪比的不同值计算比特错误率。衰落信道过滤器在 AWGN 之前应用。这是在将淡入淡出与 AWGN 合并时使用的建议序列。

创建瑞利衰落信道、调制器和解调器对象

复制代码
chan = comm.RayleighChannel('SampleRate',1e4,'MaximumDopplerShift',100);

创建 DBPSK 调制器和解调对象, 其调制顺序设置为2生成 DBPSK 调制的数据并通过通道传递。

复制代码
M = 2; % DBPSK modulation order
tx = randi([0 M-1],50000,1); % Generate a random bit stream
mod = comm.DBPSKModulator;
demod = comm.DBPSKDemodulator;
dpskSig = mod(tx);
fadedSig = chan(dpskSig); % Apply the channel effects

创建一个 AWGN 的通道对象和 ErrorRate 计算器系统对象。

复制代码
awgnChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)');
errorCalc = comm.ErrorRate;

计算信噪比的不同值的误差率。

复制代码
SNR = 0:2:20; % Range of SNR values, in dB.
numSNR = length(SNR);
berVec = zeros(3, numSNR); % Preallocate a vector for BER results 
for n = 1:numSNR
awgnChan.SNR = SNR(n);
rxSig = awgnChan(fadedSig); % Add Gaussian noise
rx = demod(rxSig);
% Demodulate
reset(errorCalc)
berVec(:,n) = errorCalc(tx,rx); % Compute error rate.
end
BER = berVec(1,:);

计算理论性能结果, 进行比较。

复制代码
BERtheory = berfading(SNR,'dpsk',M,1);

绘制误码率结果。

复制代码
semilogy(SNR,BERtheory,'b-',SNR,BER,'r*');
legend('Theoretical BER','Empirical BER');
xlabel('SNR (dB)'); ylabel('BER');
title('Binary DPSK over Rayleigh Fading Channel');

使用通道过滤器延迟

信道对象的 ChannelFilterDelay 属性的值是信道输出滞后于输入的样本数。如果直接比较输入和输出数据集, 则必须使用适当的截断或填充操作来考虑延迟。

该示例说明了在计算位错误率之前对延迟进行解释的方法。

创建 DBPSK 调制器和解调对象, 其调制顺序设置为2生成 DBPSK 调制的数据并通过通道传递。

复制代码
bitRate = 50000;
M = 2; % DQPSK modulation order
mod = comm.DBPSKModulator;
demod = comm.DBPSKDemodulator;

创建瑞利衰落信道对象。

复制代码
rayChan = comm.RayleighChannel('SampleRate',bitRate,'MaximumDopplerShift',4,...
'PathDelays',[0 0.5/bitRate],'AveragePathGains',[0 -10]);
chInfo = info(rayChan);
delay = chInfo.ChannelFilterDelay;

生成随机比特流数据。对数据进行调制, 通过衰落信道传递, 并解调。

复制代码
tx = randi([0 M-1],50000,1);
dpskSig = mod(tx);
fadedSig = rayChan(dpskSig);
rx = demod(fadedSig);

计算比特错误率, 考虑到延迟。

复制代码
errorCalc = comm.ErrorRate('ReceiveDelay', delay);
berVec = step(errorCalc,tx,rx);
ber = berVec(1)
复制代码
ber = 0.0152
复制代码
num = berVec(2)
复制代码
num = 760


最后

以上就是怕孤独衬衫最近收集整理的关于衰落信道知识的全部内容,更多相关衰落信道知识内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部