主要内容gydF4y2Ba

comm.GMSKModulatorgydF4y2Ba

使用GMSK方法调制gydF4y2Ba

描述gydF4y2Ba

的gydF4y2Bacomm.GMSKModulatorgydF4y2Ba系统对象™使用高斯最小移位键控(GMSK)方法进行调制。输出是调制信号的基带表示。有关详细信息,请参见gydF4y2Ba算法gydF4y2Ba.gydF4y2Ba

用GMSK方法调制信号:gydF4y2Ba

  1. 创建gydF4y2Bacomm.GMSKModulatorgydF4y2Ba对象并设置其属性。gydF4y2Ba

  2. 使用参数调用对象,就像调用函数一样。gydF4y2Ba

有关系统对象如何工作的详细信息,请参见gydF4y2Ba什么是系统对象?gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

gmskmodulatorgydF4y2Ba= comm.GMSKModulatorgydF4y2Ba创建一个使用GMSK调制方法调制输入信号的调制器系统对象。gydF4y2Ba

例子gydF4y2Ba

gmskmodulatorgydF4y2Ba= comm.GMSKModulator (gydF4y2Ba名字gydF4y2Ba,gydF4y2Ba价值gydF4y2Ba)gydF4y2Ba集gydF4y2Ba属性gydF4y2Ba使用一个或多个名称-值参数。例如,gydF4y2Ba“PulseLength”6gydF4y2Ba指定高斯脉冲形状的长度为6个符号间隔。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

除非另有说明,属性为gydF4y2BanontunablegydF4y2Ba,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而gydF4y2Ba释放gydF4y2Ba功能解锁它们。gydF4y2Ba

如果属性为gydF4y2Ba可调gydF4y2Ba,您可以随时更改其值。gydF4y2Ba

有关更改属性值的详细信息,请参见gydF4y2Ba使用系统对象的MATLAB系统设计gydF4y2Ba.gydF4y2Ba

选项,以位提供输入,指定为数字或逻辑gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)或gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba).gydF4y2Ba

  • 当您将此属性设置为gydF4y2Ba假gydF4y2Ba时,System对象调用的输入需要值为的双精度或有符号整数数据类型列向量gydF4y2Ba-1gydF4y2Ba或gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

  • 当您将此属性设置为gydF4y2Ba真正的gydF4y2Ba时,System对象调用的输入需要双精度或逻辑数据类型列向量gydF4y2Ba0gydF4y2Ba年代和gydF4y2Ba1gydF4y2Ba年代。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

高斯脉冲形状的带宽和符号时间的乘积,指定为正标量值。有关详细信息,请参见gydF4y2Ba算法gydF4y2Ba.gydF4y2Ba

要观察此特性对调制信号的影响,请参阅gydF4y2Ba带宽时间积对GMSK调制信号的影响gydF4y2Ba的例子。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

脉冲长度,指定为正整数。脉冲长度值表示高斯脉冲形状在符号间隔内的长度。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

符号史前,指定为gydF4y2Ba-1gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,或者元素等于这些值的向量。类的值如果是向量,则其长度必须比gydF4y2BaPulseLengthgydF4y2Ba财产。符号史前史按时间倒序指示调制器在第一次调用System对象之前使用的数据符号。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

调制波形的初始相位偏移,以弧度为单位,指定为数值标量。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

每个符号的样本数,指定为正整数。每个符号的样本数表示从输入样本到输出样本的上采样因子。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

输出数据类型,指定为任意一种gydF4y2Ba双gydF4y2Ba或gydF4y2Ba单gydF4y2Ba.gydF4y2Ba

使用gydF4y2Ba

描述gydF4y2Ba

YgydF4y2Ba= gmskmodulator (gydF4y2BaXgydF4y2Ba)gydF4y2Ba对输入数据应用GMSK调制,并返回调制后的GMSK基带信号。gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

输入数据,指定为整数或整数或位的列向量。gydF4y2Ba

的设置gydF4y2BaBitInputgydF4y2Ba属性决定输入数据的解释。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba

输出参数gydF4y2Ba

全部展开gydF4y2Ba

gmsk调制的基带信号,作为矢量返回。gydF4y2Ba

向量的长度等于输入样本的数量乘以gydF4y2BaSamplesPerSymbolgydF4y2Ba财产。有关输出数据类型的详细信息,请参见gydF4y2BaOutputDataTypegydF4y2Ba财产。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba
复数支持:金宝appgydF4y2Ba是的gydF4y2Ba

对象的功能gydF4y2Ba

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源gydF4y2BaobjgydF4y2Ba,使用这种语法:gydF4y2Ba

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源并允许更改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

将0和1的二进制序列映射到GMSK调制器的输出。这种映射也适用于MSK调制。gydF4y2Ba

创建一个GMSK调制器,接受二进制输入,每个符号的脉冲长度和采样值为1。gydF4y2Ba

gmskmodulator = com . gmskmodulator (gydF4y2Ba“BitInput”gydF4y2Ba,真的,gydF4y2Ba“PulseLength”gydF4y2Ba, 1gydF4y2Ba…gydF4y2Ba“SamplesPerSymbol”gydF4y2Ba1);gydF4y2Ba

创建一个全0的输入序列。调节序列。gydF4y2Ba

X = 0 (5,1);Y = gmskmodulator(x)gydF4y2Ba
y =gydF4y2Ba5×1复杂gydF4y2Ba1.0000 + 0.0000i -0.0000 - 1.0000i -1.0000 + 0.0000i 0.0000 + 1.0000i 1.0000 -0.0000 igydF4y2Ba

确定每个点的相位角。使用gydF4y2Ba打开gydF4y2Ba函数显示趋势。gydF4y2Ba

=展开(角(y))gydF4y2Ba
θ=gydF4y2Ba5×1gydF4y2Ba0 -1.5708 -3.1416 -4.7124 -6.2832gydF4y2Ba

零序列导致相位在样本之间移动-π/2。gydF4y2Ba

复位调制器。调制所有1的输入序列。gydF4y2Ba

重置(gmskmodulator) x = ones(5,1);Y = gmskmodulator(x)gydF4y2Ba
y =gydF4y2Ba5×1复杂gydF4y2Ba1.0000 + 0.0000i -0.0000 + 1.0000i -1.0000 -0.0000 i 0.0000 - 1.0000i 1.0000 + 0.0000igydF4y2Ba

确定每个点的相位角。使用gydF4y2Ba打开gydF4y2Ba函数显示趋势。gydF4y2Ba

=展开(角(y))gydF4y2Ba
θ=gydF4y2Ba5×1gydF4y2Ba0 1.5708 3.1416 4.7124 6.2832gydF4y2Ba

一序列导致相位在样本之间移动+π/2。gydF4y2Ba

创建GMSK调制器和解调器对。创建一个AWGN通道对象。gydF4y2Ba

gmskmodulator = com . gmskmodulator (gydF4y2Ba“BitInput”gydF4y2Ba,真的,gydF4y2Ba…gydF4y2Ba“InitialPhaseOffset”gydF4y2Baπ/ 4);通道= com . awgnchannel (gydF4y2Ba“NoiseMethod”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba信噪比(SNR)gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“信噪比”gydF4y2Ba, 0);gmskdemodulator = com . gmskdemodulator (gydF4y2Ba“BitOutput”gydF4y2Ba,真的,gydF4y2Ba…gydF4y2Ba“InitialPhaseOffset”gydF4y2Baπ/ 4);gydF4y2Ba

创建一个错误率计算器,并解释由维特比算法引起的调制器和解调器之间的延迟。gydF4y2Ba

errorRate = com . errorRate (gydF4y2Ba“ReceiveDelay”gydF4y2Ba,gydF4y2Ba…gydF4y2Bagmskdemodulator.TracebackDepth);gydF4y2Ba

通过这些步骤处理100帧数据循环。gydF4y2Ba

  1. 生成含有300个随机二进制数据元素的向量。gydF4y2Ba

  2. gmsk -调制数据。gydF4y2Ba

  3. 将调制后的数据通过AWGN通道传递。gydF4y2Ba

  4. gmsk -解调数据。gydF4y2Ba

  5. 对数据帧进行错误统计。gydF4y2Ba

为gydF4y2Ba计数器= 1:100gydF4y2Ba发送100个3位字gydF4y2Ba数据= randi([0 1],300,1);modSignal = gmskmodulator(data);noisyssignal = channel(modSignal);receivedData = gmskdemodulator(noisyssignal);errorStats = errorRate(数据,receivedData);gydF4y2Ba结束gydF4y2Ba

显示错误统计信息。gydF4y2Ba

流(gydF4y2Ba错误率= %f\n错误数= %d\ngydF4y2Ba,gydF4y2Ba…gydF4y2BaerrorStats errorStats (1), (2))gydF4y2Ba
错误率= 0.000133错误数= 4gydF4y2Ba

这个例子演示了带宽时间(BT)乘积对GMSK调制信号的影响。gydF4y2Ba

创建一个二进制数据向量,并对数据应用GMSK调制。gydF4y2Ba

D = [0 1 1 0 1 0 0 1 1 1]';a = com . gmskmodulator (BitInput=true,SamplesPerSymbol=10)gydF4y2Ba
a = com . gmskmodulator with properties: BitInput: true BandwidthTimeProduct: 0.3000 PulseLength: 4 SymbolPrehistory: 1 InitialPhaseOffset: 0 SamplesPerSymbol: 10 OutputDataType: 'double'gydF4y2Ba
X = a(d);BTa = sprintf(gydF4y2Ba“BT = % 2.1 f 'gydF4y2Ba, a.BandwidthTimeProduct);gydF4y2Ba

画出相位角并使用gydF4y2Ba打开gydF4y2Ba函数更好地显示趋势。gydF4y2Ba

情节(打开(角(x)),gydF4y2Ba“红”gydF4y2Ba);标题(gydF4y2Ba“带宽时间乘积效应”gydF4y2Ba)举行gydF4y2Ba在gydF4y2Ba;情节(1:10:长度(x),打开(角(x(1:10:结束))),gydF4y2Ba‘*’gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba

将BT积设为1,并在同一图中绘制相位角。gydF4y2Ba

a = com . gmskmodulator (BitInput=true,gydF4y2Ba…gydF4y2BaSamplesPerSymbol = 10, BandwidthTimeProduct = 1)gydF4y2Ba
a = com . gmskmodulator with properties: BitInput: true BandwidthTimeProduct: 1 PulseLength: 4 SymbolPrehistory: 1 InitialPhaseOffset: 0 SamplesPerSymbol: 10 OutputDataType: 'double'gydF4y2Ba
X = a(d);BTb = sprintf(gydF4y2Ba“BT = % 2.1 f 'gydF4y2Ba, a.BandwidthTimeProduct);情节(打开(角(x)),gydF4y2Ba“蓝。”gydF4y2Ba);情节(1:10:长度(x),打开(角(x(1:10:结束))),gydF4y2Ba“o”gydF4y2Ba);gydF4y2Ba

将BT乘积设置为0.1,并在同一图中绘制相位角。gydF4y2Ba

a = com . gmskmodulator (BitInput=true,gydF4y2Ba…gydF4y2BaSamplesPerSymbol = 10, BandwidthTimeProduct = 0.1)gydF4y2Ba
a = com . gmskmodulator with properties: BitInput: true BandwidthTimeProduct: 0.1000 PulseLength: 4 SymbolPrehistory: 1 InitialPhaseOffset: 0 SamplesPerSymbol: 10 OutputDataType: 'double'gydF4y2Ba
BTc = sprintf(gydF4y2Ba“BT = % 2.1 f 'gydF4y2Ba, a.BandwidthTimeProduct);gydF4y2Ba

该脉冲的传播与BT乘积成反比,较低的BT在比特符号周期内导致较宽的传播。脉冲的峰值振幅与BT乘积成正比,较低的峰值振幅导致在比特符号周期内的分布较窄。随着脉冲带宽的减小,脉冲持续时间增加。gydF4y2Ba

X = a(d);情节(打开(角(x)),gydF4y2Ba“绿色——”gydF4y2Ba);情节(1:10:长度(x),打开(角(x(1:10:结束))),gydF4y2Ba“x”gydF4y2Ba);传奇(BTa、gydF4y2Ba”gydF4y2BaBTb,gydF4y2Ba”gydF4y2BaBTc,gydF4y2Ba”gydF4y2Ba)举行gydF4y2Ba从gydF4y2Ba;gydF4y2Ba

图中包含一个轴对象。标题为Bandwidth Time Product Effect的axes对象包含6个类型为line的对象。这些对象表示BT=0.3, BT=1.0, BT=0.1。gydF4y2Ba


                    

通过绘制不同脉冲长度的GMSK和MSK的眼图,比较高斯最小位移键控(GMSK)和最小位移键控(MSK)调制方案。gydF4y2Ba

设置每个符号变量的样本。gydF4y2Ba

SPS = 8;gydF4y2Ba

生成随机二进制数据。gydF4y2Ba

数据= randi([0 1],1000,1);gydF4y2Ba

创建接受二进制输入的GMSK和MSK调制器。设置gydF4y2BaPulseLengthgydF4y2Ba特性的GMSK调制器gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

gmskMod = com . gmskmodulator (gydF4y2Ba“BitInput”gydF4y2Ba,真的,gydF4y2Ba“PulseLength”gydF4y2Ba, 1gydF4y2Ba…gydF4y2Ba“SamplesPerSymbol”gydF4y2Ba, sps);mskMod = com . mskmodulator (gydF4y2Ba“BitInput”gydF4y2Ba,真的,gydF4y2Ba“SamplesPerSymbol”gydF4y2Ba, sps);gydF4y2Ba

使用GMSK和MSK调制器调制数据。gydF4y2Ba

modSigGMSK = gmskMod(data);modSigMSK = mskMod(data);gydF4y2Ba

将调制信号通过信噪比为的AWGN信道gydF4y2Ba30.gydF4y2BadB。gydF4y2Ba

rxSigGMSK = awgn(modSigGMSK,30);rxSigMSK = awgn(modSigMSK,30);gydF4y2Ba

使用gydF4y2BaeyediagramgydF4y2Ba函数绘制噪声信号的眼图。GMSK脉冲长度设置为gydF4y2Ba1gydF4y2Ba,两眼图几乎一模一样。gydF4y2Ba

eyediagram (rxSigGMSK sps 1、sps / 2)gydF4y2Ba

图眼图包含2个轴对象。axis对象1的标题为“同相信号的眼图”,包含一个类型为line的对象。该对象表示In-phase。坐标轴对象2,标题为“正交信号的眼图”,包含一个类型为line的对象。该对象表示正交。gydF4y2Ba

eyediagram (rxSigMSK sps 1、sps / 2)gydF4y2Ba

图眼图包含2个轴对象。axis对象1的标题为“同相信号的眼图”,包含一个类型为line的对象。该对象表示In-phase。坐标轴对象2,标题为“正交信号的眼图”,包含一个类型为line的对象。该对象表示正交。gydF4y2Ba

设置gydF4y2BaPulseLengthgydF4y2Ba属性设置为GMSK调制器对象gydF4y2Ba3.gydF4y2Ba.因为属性是不可调的,所以必须先释放对象。gydF4y2Ba

(gmskMod) gmskMod发布。PulseLength = 3;gydF4y2Ba

使用更新的GMSK调制器对象生成一个调制信号,并将其通过AWGN通道。gydF4y2Ba

modSigGMSK = gmskMod(data);rxSigGMSK = awgn(modSigGMSK,30);gydF4y2Ba

对于连续相位调制(CPM)波形,如GSMK,波形取决于先前符号和当前符号的值。绘制GMSK信号的眼图,可以看到脉冲长度的增加导致眼图中路径数量的增加。gydF4y2Ba

eyediagram (rxSigGMSK sps 1、sps / 2)gydF4y2Ba

图眼图包含2个轴对象。axis对象1的标题为“同相信号的眼图”,包含一个类型为line的对象。该对象表示In-phase。坐标轴对象2,标题为“正交信号的眼图”,包含一个类型为line的对象。该对象表示正交。gydF4y2Ba

通过改变gydF4y2BaPulseLengthgydF4y2Ba将GMSK调制器对象的参数转换为其他值。如果将属性设置为偶数,则应设置gydF4y2BagmskMod。InitialPhaseOffsetgydF4y2Ba来gydF4y2Baπ/ 4gydF4y2Ba的偏移量参数gydF4y2BaeyediagramgydF4y2Ba函数gydF4y2Basps / 2gydF4y2Ba来gydF4y2Ba0gydF4y2Ba为了更好地观察调制信号。为了更清楚地查看高斯脉冲形状,必须使用显示信号相位的作用域,如中所述gydF4y2BaCPM相位树gydF4y2Ba的例子。gydF4y2Ba

算法gydF4y2Ba

的gydF4y2BaBandwidthTimeProductgydF4y2Ba属性表示带宽乘以时间。使用此特性可以以增加符号间干扰为代价降低带宽。的gydF4y2BaPulseLengthgydF4y2Ba属性以符号间隔测量高斯脉冲形状的长度。这些方程定义了频率脉冲的形状。gydF4y2BaBgydF4y2BabgydF4y2Ba表示脉冲和的带宽gydF4y2BaTgydF4y2Ba是符号持续时间。gydF4y2Ba问(t)gydF4y2Ba是互补累积分布函数。gydF4y2Ba

ggydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba TgydF4y2Ba {gydF4y2Ba 问gydF4y2Ba [gydF4y2Ba 2gydF4y2Ba πgydF4y2Ba BgydF4y2Ba bgydF4y2Ba tgydF4y2Ba −gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba lngydF4y2Ba (gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ]gydF4y2Ba −gydF4y2Ba 问gydF4y2Ba [gydF4y2Ba 2gydF4y2Ba πgydF4y2Ba BgydF4y2Ba bgydF4y2Ba tgydF4y2Ba +gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba lngydF4y2Ba (gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ]gydF4y2Ba }gydF4y2Ba 问gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba ∫gydF4y2Ba tgydF4y2Ba ∞gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba πgydF4y2Ba egydF4y2Ba −gydF4y2Ba τgydF4y2Ba 2gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba dgydF4y2Ba τgydF4y2Ba

对于这个System对象,输入符号为1导致π/2弧度的相移,对应于调制指数为0.5。gydF4y2Ba

参考文献gydF4y2Ba

[1]gydF4y2Ba安德森,约翰·B,托尔·奥林,卡尔·埃里克·桑德伯格。gydF4y2Ba数字相位调制gydF4y2Ba.纽约:全会出版社,1986年。gydF4y2Ba

扩展功能gydF4y2Ba

在R2012a中引入gydF4y2Ba