comm.CPMDemodulator
采用CPM方法和维特比算法对信号进行解调
描述
的comm.CPMDemodulator 系统对象™解调使用连续相位调制(CPM)方法调制的输入信号。输入是调制信号的基带表示。有关所应用的解调和滤波的更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">CPM解调方法一个>而且<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">脉冲形状滤波一个>.
要解调使用CPM方法调制的信号:
创建comm.CPMDemodulator 对象并设置其属性。
使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见<一个href="//www.tatmou.com/help/matlab/matlab_prog/what-are-system-objects.html" class="a">什么是系统对象?一个>
创建
描述
cpmdemod = com . cpm解调器
创建一个解调器系统对象来使用维特比算法解调输入CPM信号。
cpmdemod = com . cpm解调器(的名字 ,价值 )
使用一个或多个名称-值参数设置属性。例如,“SymbolMapping”、“灰色” 为调制符号指定灰色顺序的符号映射。
cpmdemod = com . cpm解调器(米 ,的名字 ,价值 )
设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder财产米 和可选的名称-值参数。
属性
除非另有说明,属性为<年代p一个nclass="emphasis">nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而<一个href="//www.tatmou.com/help/matlab/ref/releasesystemobject.html">释放功能解锁它们。
如果属性为<年代p一个nclass="emphasis">可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见<一个href="//www.tatmou.com/help/matlab/matlab_prog/system-design-in-matlab-using-system-objects.html" class="a">使用系统对象的MATLAB系统设计一个>.
ModulationOrder
- - - - - -<年代p一个n我te米prop="purpose">调制顺序年代p一个n>
4年代p一个n>(默认)|<年代p一个n我te米prop="inputvalue">二标量的幂年代p一个n>
调制顺序,指定为2的幂标量。调制顺序,米 = 2<年代upclass="italic">k指定信号星座中的点数,其中k 是一个正整数,表示每个符号的位数。
数据类型:年代trong>双
BitOutput
- - - - - -<年代p一个n我te米prop="purpose">选项以位输出数据年代p一个n>
0或假
(默认)|<年代p一个n我te米prop="inputvalue">1或真正的
选项,以位的形式输出数据,指定为逻辑0 (假 )或1 (真正的 ).
将此属性设置为假 以整数形式输出数据。
将此属性设置为真正的 以位的形式输出数据。
有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">整数值和二进制值输出信号一个>.
数据类型:年代trong>逻辑
SymbolMapping
- - - - - -<年代p一个n我te米prop="purpose">符号编码年代p一个n>
“二元”
(默认)|<年代p一个n我te米prop="inputvalue">“灰色”
星座位的符号编码映射,指定为“二元” 或“灰色” .
将此属性设置为“二元” 使用自然二进制编码顺序映射符号。
将此属性设置为“灰色” 来映射使用灰色编码排序的符号。
有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">整数值和二进制值输出信号一个>.
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产真正的 .
ModulationIndex
- - - - - -<年代p一个n我te米prop="purpose">调制指数年代p一个n>
0.5
(默认)|<年代p一个n我te米prop="inputvalue">负的标量年代p一个n>|<年代p一个n我te米prop="inputvalue">列向量年代p一个n>
调制索引,指定为非负的标量或列向量。有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">CPM解调方法一个>.
数据类型:年代trong>双
FrequencyPulse
- - - - - -<年代p一个n我te米prop="purpose">频率脉冲整形的类型年代p一个n>
“矩形”
(默认)|<年代p一个n我te米prop="inputvalue">提出了余弦的
|<年代p一个n我te米prop="inputvalue">“光谱上升余弦”
|<年代p一个n我te米prop="inputvalue">“高斯”|<年代p一个n我te米prop="inputvalue">“驯服FM”
调制器用于平滑调制信号的相位转变的频率脉冲整形类型,指定为“矩形” ,提出了余弦的 ,“光谱上升余弦” ,“高斯” ,或“驯服FM” .有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">脉冲形状滤波一个>.
MainLobeDuration
- - - - - -<年代p一个n我te米prop="purpose">主瓣持续时间年代p一个n>
1
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
光谱凸起余弦脉冲中最大波瓣的主波瓣持续时间,指定为正整数,表示解调器用于脉冲成形调制信号的符号间隔数。
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">FrequencyPulse财产“光谱上升余弦” .
数据类型:年代trong>双
RolloffFactor
- - - - - -<年代p一个n我te米prop="purpose">转出的因素年代p一个n>
0.2
(默认)|<年代p一个n我te米prop="inputvalue">范围[0,1]中的标量年代p一个n>
谱提升余弦脉冲的滚转因子,指定为范围[0,1]中的标量。
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">FrequencyPulse财产“光谱上升余弦” .
数据类型:年代trong>双
BandwidthTimeProduct
- - - - - -<年代p一个n我te米prop="purpose">高斯脉冲形状的带宽和符号时间的乘积年代p一个n>
0.3
(默认)|<年代p一个n我te米prop="inputvalue">积极的标量年代p一个n>
高斯脉冲形状的带宽和符号时间的乘积,指定为正标量。使用BandwidthTimeProduct 为了减少带宽,以增加码间干扰为代价。
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">FrequencyPulse财产“高斯” .
数据类型:年代trong>双
PulseLength
- - - - - -<年代p一个n我te米prop="purpose">频率脉冲形状长度年代p一个n>
1
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
以符号间隔表示的频率脉冲形状的长度,指定为正整数。有关频率脉冲长度的更多信息,请参阅LT 在<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">脉冲形状滤波一个>.
数据类型:年代trong>双
SymbolPrehistory
- - - - - -<年代p一个n我te米prop="purpose">史前象征年代p一个n>
1
(默认)|<年代p一个n我te米prop="inputvalue">标量年代p一个n>|<年代p一个n我te米prop="inputvalue">向量年代p一个n>
符号史前,指定为包含奇数整数元素的标量或向量,范围为[- (<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder- 1), (ModulationOrder - 1)]。此属性按时间倒序定义调制器在第一次调用对象之前使用的数据符号。当您将此属性指定为向量时,长度必须为(<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">PulseLength- 1)。
数据类型:年代trong>双
InitialPhaseOffset
- - - - - -<年代p一个n我te米prop="purpose">初始相位偏移年代p一个n>
0
(默认)|<年代p一个n我te米prop="inputvalue">标量年代p一个n>
调制波形弧度中的初始相位偏移量,用标量表示。
数据类型:年代trong>双
SamplesPerSymbol
- - - - - -<年代p一个n我te米prop="purpose">每个输入符号的样本数年代p一个n>
8
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
每个输入符号的抽样数,指定为正整数。此属性表示每个整数或二进制字输出的输入样本数。对于所有由脉冲形状定义的非二进制格式,该值必须大于1。
数据类型:年代trong>双
TracebackDepth
- - - - - -<年代p一个n我te米prop="purpose">维特比算法的回溯深度年代p一个n>
16
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
Viterbi算法的回溯深度,指定为一个正整数,表示Viterbi算法用于构造每个回溯路径的网格分支的数量。此属性的值也是输出延迟和输出中第一个有意义的解调符号前面的零符号数。有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">回溯深度和输出延迟一个>.
数据类型:年代trong>双
OutputDataType
- - - - - -<年代p一个n我te米prop="purpose">输出数据类型年代p一个n>
“双”
(默认)|<年代p一个n我te米prop="inputvalue">“逻辑”
|<年代p一个n我te米prop="inputvalue">“int8”
|<年代p一个n我te米prop="inputvalue">“int16”|<年代p一个n我te米prop="inputvalue">“int32”
输出的数据类型,指定为这些值之一。
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产假 ,可将输出数据类型设置为“双” ,“int8” ,“int16” ,或“int32” .
当你设置BitOutput 财产真正的 ,可将输出数据类型设置为“逻辑” 或“双” .
使用
描述
y
= cpmdemod (<一个href="#d123e123423" class="intrnllnk">x)
对输入信号采用CPM解调方法并返回解调信号。
输入参数
x- - - - - -<年代p一个n我te米prop="purpose">CPM-modulated信号年代p一个n>
列向量年代p一个n>
调制的cpm信号,指定为长度等于的整数倍的列向量<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SamplesPerSymbol财产。
数据类型:年代trong>双|单
输出参数
y-输出信号列向量|矩阵年代p一个n>
输出信号,以列向量或矩阵形式返回。若要指定对象以整数或位的形式输出值,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产。要指定输出数据类型,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">OutputDataType财产。
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj ,使用这种语法:
发行版(obj)
例子
基于灰度映射和位输入的CPM信号调制解调
创建CPM调制器和CPM解调器系统对象。
cpmmodulator = com . cpmmodulator (8,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitInput”年代p一个n>,真的,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“SymbolMapping”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“灰色”年代p一个n>);cpmdemodulator = com . cpmdemodulator (8,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitOutput”年代p一个n>,真的,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“SymbolMapping”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“灰色”年代p一个n>);
创建一个错误率计算器System对象™,用于解释由Viterbi算法引起的延迟。
delay = log2(cpm解调器. modulationorder)<年代p一个n年代tyle="color:#0000FF">...年代p一个n>* cpmdemodulator.TracebackDepth;errorRate = com . errorRate (<年代p一个n年代tyle="color:#A020F0">“ReceiveDelay”年代p一个n>、延迟);
传输100个3位字,打印错误率结果。
为年代p一个n>Counter = 1:100 data = randi([0 1],300,1);modSignal = cpmmodulator(data);noisyssignal = awgn(modSignal,0);receivedData = cpmdemodulator(noisyssignal);errorStats = errorRate(数据,receivedData);<年代p一个n年代tyle="color:#0000FF">结束年代p一个n>流(<年代p一个n年代tyle="color:#A020F0">错误率= %f\n错误数= %d\n年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>errorStats errorStats (1), (2))
错误率= 0.004006错误数= 120
应用GFSK调制和解调
使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmmodulator-system-object.html" data-docid="comm_ref#bsnan5g_15" class="a">comm.CPMModulator而且<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" data-docid="comm_ref#bsnan5g_7" class="a">comm.CPMDemodulator系统对象,应用高斯频移键控(GFSK)调制和解调随机位数据。
创建一个GFSK调制器和解调器对。
gfskMod = com . cpmmodulator (<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationOrder”年代p一个n>2,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“FrequencyPulse”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“高斯”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BandwidthTimeProduct”年代p一个n>, 0.5,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationIndex”年代p一个n>, 1<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitInput”年代p一个n>,真正的);gfskDemod = com . cpmdemodulator (<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationOrder”年代p一个n>2,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“FrequencyPulse”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“高斯”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BandwidthTimeProduct”年代p一个n>, 0.5,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationIndex”年代p一个n>, 1<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitOutput”年代p一个n>,真正的);
生成随机位数据并应用GFSK调制。使用散点图来查看星座。
numSym = 100;x = randi([0 1],numSym*gfskMod.SamplesPerSymbol,1);y = gfskMod(x);eyediagram (y, 16)
解调gfsk调制数据。为了验证解调后的信号数据与原始数据相等,需要考虑GFSK调制解调过程中高斯滤波引入的延迟。
z = gfskDemod(y);延迟= finddelay(x,z);isequal (x (1: end-delay)、z(延迟+ 1:结束)
ans =<年代p一个nclass="emphasis">逻辑1
更多关于
CPM解调方法
CPM解调方法过程由一个相关器和一个极大似然序列检测器(MLSD)组成,该检测器通过状态网格搜索路径以寻找最小欧氏距离路径。当调制指数为有理数时(h =米 /p )时,符号中存在有限个相态。实现中使用Viterbi算法进行MLSD。
{h 我}是调制指标的序列,它在一组指标中循环移动{h 0年代ub>,h 1年代ub>,h 2年代ub>、……h H-1年代ub>}。
h我=米 我/p 我年代ub>是适当有理形式的调制指数。
米我是调制指数的分子。
p我是调制指数的分母。
米我而且p 我都是相对素数。
的最小公倍数(LCM<年代p一个nclass="inlineequation">{p 0年代ub>,p 1年代ub>,p 2年代ub>、……p H-1年代ub>}年代p一个n>表示为p .
h我=米 '<年代ub>我/p .
{h 我}决定相态的数量,
并影响格子态的数量,
numStates=numPhaseStates ×米 (l 1)年代up>,
l是脉冲长度。
米是调制顺序。
CPM方法
解调器的输入是调制信号的基带表示:
{α 我的序列米 -从字母表中选择的数据符号±1,±3,±(米 1)。
米一定要有表格2吗<年代up>k对于某个正整数k ,在那里米 是调制顺序,并指定符号字母的大小。
{h 我}是调制指标序列,和h 我在一组索引中循环移动{h 0年代ub>,h 我,h 2年代ub>、……h H-1年代ub>}。当H =1,只存在一个调制指标,h 0年代ub>,表示为h .
脉冲形状滤波
CPM方法使用脉冲整形来平滑调制信号的相变。这个函数问 (t )为频率脉冲得到的相位响应,g (t ),通过此关系:<年代p一个nclass="inlineequation">
.
的指定频率脉冲形状对应于这些脉冲形状表达式g (t ).
脉冲波形
表达式
矩形
提出了余弦
谱上升余弦
高斯
驯服调频(驯服调频)
l主要年代ub>是以符号间隔为单位的主瓣脉冲持续时间。
β是谱上升余弦的滚转因子。
Bb年代ub>为带宽与高斯脉冲的乘积。
脉冲的持续时间,LT ,是以符号间隔为单位的脉冲长度。由表达式定义,谱凸起余弦、高斯和驯服的调频脉冲形状具有无限长的长度。出于实际目的,LT 指定截断的有限长度。
有关脉冲形状滤波的更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">[1]一个>.
整数值和二进制值输出信号
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产假 :
该对象输出一个长度为的整数列向量N /<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SamplesPerSymbol,在那里N 是输入信号的长度,表示输入基带调制符号的个数。输出值为奇数,取值范围为[- (<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder1), (ModulationOrder 1)]。
您不能设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">OutputDataType财产“逻辑” .
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产真正的 :
该对象输出一个长度等于的二进制列向量<年代p一个nclass="inlineequation">k×(N /SamplesPerSymbol )年代p一个n>,在那里<年代p一个nclass="inlineequation">k= log2 (ModulationOrder )年代p一个n>而且N 是输入基带调制符号的个数(具体来说,是输入信号的长度)。的<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SymbolMapping属性确定对象如何映射范围[0,ModulationOrder - 1] tok -length位字。二进制字映射选项是自然二进制编码排序或灰色编码排序。
您可以设置OutputDataType 属性仅用于“双” 或“逻辑” .
对象遵循这个过程。
将每个解调符号映射为奇数l 在范围[- (ModulationOrder 1), (ModulationOrder 1)]。
地图l 到非负整数(l +ModulationOrder 1) / 2。
将每个非负整数映射到ak -length二进制字。类指定的二进制字映射选项是自然二进制编码排序或灰色编码排序<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SymbolMapping财产。
回溯深度和输出延迟
回溯深度是用于构造每个回溯路径的网格分支的数量。回溯深度影响输出延迟,输出延迟是在输出中第一个有意义的解调值之前的零符号的数量。
最佳回溯深度设置依赖于最小平方欧几里得距离计算。属性选择一个典型值,这取决于状态的数量five-times-the-constraint-length 规则,对应于<年代p一个nclass="inlineequation">5日志<年代ub>2年代ub>(numStates )年代p一个n>.
对于脉冲长度为3和的二元凸起余弦脉冲形状h =2/3,应用此规则<年代p一个nclass="inlineequation">(5日志<年代ub>2年代ub>(3×2<年代up>2年代up>) = 18年代p一个n>给出一个接近最优值20的结果。
参考文献
[1]<年代p一个n>安德森,约翰·B,托尔·奥林,卡尔·埃里克·桑德伯格。数字相位调制 .纽约:全会出版社,1986年。年代p一个n>
扩展功能
C/ c++代码生成使用MATLAB®Coder™生成C和c++代码。年代p一个n>
使用注意事项和限制:年代p一个n>
看到<一个href="//www.tatmou.com/help/coder/ug/use-system-objects-in-matlab-code-generation.html" class="a">系统对象在MATLAB代码生成一个>(MATLAB编码器)年代p一个n>.
版本历史
在R2012a中引入年代trong>
另请参阅
对象
comm.CPMModulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.CPFSKDemodulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.MSKDemodulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.GMSKDemodulator
块
采用CPM方法和维特比算法对信号进行解调
描述
的
要解调使用CPM方法调制的信号:
创建
comm.CPMDemodulator 对象并设置其属性。使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见<一个href="//www.tatmou.com/help/matlab/matlab_prog/what-are-system-objects.html" class="a">什么是系统对象?一个>
创建
描述
cpmdemod = com . cpm解调器
创建一个解调器系统对象来使用维特比算法解调输入CPM信号。
cpmdemod = com . cpm解调器(的名字 ,价值 )
使用一个或多个名称-值参数设置属性。例如,“SymbolMapping”、“灰色” 为调制符号指定灰色顺序的符号映射。
cpmdemod = com . cpm解调器(米 ,的名字 ,价值 )
设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder财产米 和可选的名称-值参数。
描述
cpmdemod = com . cpm解调器
创建一个解调器系统对象来使用维特比算法解调输入CPM信号。
cpmdemod = com . cpm解调器(的名字 ,价值 )
使用一个或多个名称-值参数设置属性。例如,“SymbolMapping”、“灰色” 为调制符号指定灰色顺序的符号映射。
cpmdemod = com . cpm解调器(米 ,的名字 ,价值 )
设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder财产米 和可选的名称-值参数。
cpmdemod = com . cpm解调器
创建一个解调器系统对象来使用维特比算法解调输入CPM信号。
cpmdemod = com . cpm解调器(
使用一个或多个名称-值参数设置属性。例如,
cpmdemod = com . cpm解调器(
设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder财产
属性
除非另有说明,属性为<年代p一个nclass="emphasis">nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而<一个href="//www.tatmou.com/help/matlab/ref/releasesystemobject.html">释放功能解锁它们。
如果属性为<年代p一个nclass="emphasis">可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见<一个href="//www.tatmou.com/help/matlab/matlab_prog/system-design-in-matlab-using-system-objects.html" class="a">使用系统对象的MATLAB系统设计一个>.
ModulationOrder
- - - - - -<年代p一个n我te米prop="purpose">调制顺序年代p一个n>
4年代p一个n>(默认)|<年代p一个n我te米prop="inputvalue">二标量的幂年代p一个n>
调制顺序,指定为2的幂标量。调制顺序,米 = 2<年代upclass="italic">k指定信号星座中的点数,其中k 是一个正整数,表示每个符号的位数。
数据类型:年代trong>双
BitOutput
- - - - - -<年代p一个n我te米prop="purpose">选项以位输出数据年代p一个n>
0或假
(默认)|<年代p一个n我te米prop="inputvalue">1或真正的
选项,以位的形式输出数据,指定为逻辑0 (假 )或1 (真正的 ).
将此属性设置为假 以整数形式输出数据。
将此属性设置为真正的 以位的形式输出数据。
有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">整数值和二进制值输出信号一个>.
数据类型:年代trong>逻辑
SymbolMapping
- - - - - -<年代p一个n我te米prop="purpose">符号编码年代p一个n>
“二元”
(默认)|<年代p一个n我te米prop="inputvalue">“灰色”
星座位的符号编码映射,指定为“二元” 或“灰色” .
将此属性设置为“二元” 使用自然二进制编码顺序映射符号。
将此属性设置为“灰色” 来映射使用灰色编码排序的符号。
有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">整数值和二进制值输出信号一个>.
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产真正的 .
ModulationIndex
- - - - - -<年代p一个n我te米prop="purpose">调制指数年代p一个n>
0.5
(默认)|<年代p一个n我te米prop="inputvalue">负的标量年代p一个n>|<年代p一个n我te米prop="inputvalue">列向量年代p一个n>
调制索引,指定为非负的标量或列向量。有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">CPM解调方法一个>.
数据类型:年代trong>双
FrequencyPulse
- - - - - -<年代p一个n我te米prop="purpose">频率脉冲整形的类型年代p一个n>
“矩形”
(默认)|<年代p一个n我te米prop="inputvalue">提出了余弦的
|<年代p一个n我te米prop="inputvalue">“光谱上升余弦”
|<年代p一个n我te米prop="inputvalue">“高斯”|<年代p一个n我te米prop="inputvalue">“驯服FM”
调制器用于平滑调制信号的相位转变的频率脉冲整形类型,指定为“矩形” ,提出了余弦的 ,“光谱上升余弦” ,“高斯” ,或“驯服FM” .有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">脉冲形状滤波一个>.
MainLobeDuration
- - - - - -<年代p一个n我te米prop="purpose">主瓣持续时间年代p一个n>
1
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
光谱凸起余弦脉冲中最大波瓣的主波瓣持续时间,指定为正整数,表示解调器用于脉冲成形调制信号的符号间隔数。
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">FrequencyPulse财产“光谱上升余弦” .
数据类型:年代trong>双
RolloffFactor
- - - - - -<年代p一个n我te米prop="purpose">转出的因素年代p一个n>
0.2
(默认)|<年代p一个n我te米prop="inputvalue">范围[0,1]中的标量年代p一个n>
谱提升余弦脉冲的滚转因子,指定为范围[0,1]中的标量。
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">FrequencyPulse财产“光谱上升余弦” .
数据类型:年代trong>双
BandwidthTimeProduct
- - - - - -<年代p一个n我te米prop="purpose">高斯脉冲形状的带宽和符号时间的乘积年代p一个n>
0.3
(默认)|<年代p一个n我te米prop="inputvalue">积极的标量年代p一个n>
高斯脉冲形状的带宽和符号时间的乘积,指定为正标量。使用BandwidthTimeProduct 为了减少带宽,以增加码间干扰为代价。
依赖关系
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">FrequencyPulse财产“高斯” .
数据类型:年代trong>双
PulseLength
- - - - - -<年代p一个n我te米prop="purpose">频率脉冲形状长度年代p一个n>
1
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
以符号间隔表示的频率脉冲形状的长度,指定为正整数。有关频率脉冲长度的更多信息,请参阅LT 在<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">脉冲形状滤波一个>.
数据类型:年代trong>双
SymbolPrehistory
- - - - - -<年代p一个n我te米prop="purpose">史前象征年代p一个n>
1
(默认)|<年代p一个n我te米prop="inputvalue">标量年代p一个n>|<年代p一个n我te米prop="inputvalue">向量年代p一个n>
符号史前,指定为包含奇数整数元素的标量或向量,范围为[- (<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder- 1), (ModulationOrder - 1)]。此属性按时间倒序定义调制器在第一次调用对象之前使用的数据符号。当您将此属性指定为向量时,长度必须为(<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">PulseLength- 1)。
数据类型:年代trong>双
InitialPhaseOffset
- - - - - -<年代p一个n我te米prop="purpose">初始相位偏移年代p一个n>
0
(默认)|<年代p一个n我te米prop="inputvalue">标量年代p一个n>
调制波形弧度中的初始相位偏移量,用标量表示。
数据类型:年代trong>双
SamplesPerSymbol
- - - - - -<年代p一个n我te米prop="purpose">每个输入符号的样本数年代p一个n>
8
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
每个输入符号的抽样数,指定为正整数。此属性表示每个整数或二进制字输出的输入样本数。对于所有由脉冲形状定义的非二进制格式,该值必须大于1。
数据类型:年代trong>双
TracebackDepth
- - - - - -<年代p一个n我te米prop="purpose">维特比算法的回溯深度年代p一个n>
16
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>
Viterbi算法的回溯深度,指定为一个正整数,表示Viterbi算法用于构造每个回溯路径的网格分支的数量。此属性的值也是输出延迟和输出中第一个有意义的解调符号前面的零符号数。有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">回溯深度和输出延迟一个>.
数据类型:年代trong>双
OutputDataType
- - - - - -<年代p一个n我te米prop="purpose">输出数据类型年代p一个n>
“双”
(默认)|<年代p一个n我te米prop="inputvalue">“逻辑”
|<年代p一个n我te米prop="inputvalue">“int8”
|<年代p一个n我te米prop="inputvalue">“int16”|<年代p一个n我te米prop="inputvalue">“int32”
输出的数据类型,指定为这些值之一。
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产假 ,可将输出数据类型设置为“双” ,“int8” ,“int16” ,或“int32” .
当你设置BitOutput 财产真正的 ,可将输出数据类型设置为“逻辑” 或“双” .
除非另有说明,属性为<年代p一个nclass="emphasis">nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而<一个href="//www.tatmou.com/help/matlab/ref/releasesystemobject.html"> 如果属性为<年代p一个nclass="emphasis">可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见<一个href="//www.tatmou.com/help/matlab/matlab_prog/system-design-in-matlab-using-system-objects.html" class="a">使用系统对象的MATLAB系统设计一个>.
调制顺序,指定为2的幂标量。调制顺序, 数据类型:年代trong> 选项,以位的形式输出数据,指定为逻辑 将此属性设置为 将此属性设置为 有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">整数值和二进制值输出信号一个>.
数据类型:年代trong> 星座位的符号编码映射,指定为 将此属性设置为 将此属性设置为 有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">整数值和二进制值输出信号一个>.
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 调制索引,指定为非负的标量或列向量。有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">CPM解调方法一个>.
数据类型:年代trong> 调制器用于平滑调制信号的相位转变的频率脉冲整形类型,指定为 光谱凸起余弦脉冲中最大波瓣的主波瓣持续时间,指定为正整数,表示解调器用于脉冲成形调制信号的符号间隔数。
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 数据类型:年代trong> 谱提升余弦脉冲的滚转因子,指定为范围[0,1]中的标量。
属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 数据类型:年代trong> 高斯脉冲形状的带宽和符号时间的乘积,指定为正标量。使用 属性可启用此属性<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 数据类型:年代trong> 以符号间隔表示的频率脉冲形状的长度,指定为正整数。有关频率脉冲长度的更多信息,请参阅 数据类型:年代trong> 符号史前,指定为包含奇数整数元素的标量或向量,范围为[- (<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 数据类型:年代trong> 调制波形弧度中的初始相位偏移量,用标量表示。
数据类型:年代trong> 每个输入符号的抽样数,指定为正整数。此属性表示每个整数或二进制字输出的输入样本数。对于所有由脉冲形状定义的非二进制格式,该值必须大于1。
数据类型:年代trong> Viterbi算法的回溯深度,指定为一个正整数,表示Viterbi算法用于构造每个回溯路径的网格分支的数量。此属性的值也是输出延迟和输出中第一个有意义的解调符号前面的零符号数。有关更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">回溯深度和输出延迟一个>.
数据类型:年代trong> 输出的数据类型,指定为这些值之一。
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 当你设置释放功能解锁它们。
ModulationOrder
- - - - - -<年代p一个n我te米prop="purpose">调制顺序年代p一个n>
4年代p一个n>(默认)|<年代p一个n我te米prop="inputvalue">二标量的幂年代p一个n>双
BitOutput
- - - - - -<年代p一个n我te米prop="purpose">选项以位输出数据年代p一个n>0或
(默认)|<年代p一个n我te米prop="inputvalue">1或
逻辑
SymbolMapping
- - - - - -<年代p一个n我te米prop="purpose">符号编码年代p一个n>“二元”
(默认)|<年代p一个n我te米prop="inputvalue">“灰色”
依赖关系
BitOutput财产
ModulationIndex
- - - - - -<年代p一个n我te米prop="purpose">调制指数年代p一个n>0.5
(默认)|<年代p一个n我te米prop="inputvalue">负的标量年代p一个n>|<年代p一个n我te米prop="inputvalue">列向量年代p一个n>双
FrequencyPulse
- - - - - -<年代p一个n我te米prop="purpose">频率脉冲整形的类型年代p一个n>“矩形”
(默认)|<年代p一个n我te米prop="inputvalue">提出了余弦的
|<年代p一个n我te米prop="inputvalue">“光谱上升余弦”
|<年代p一个n我te米prop="inputvalue">“高斯”|<年代p一个n我te米prop="inputvalue">
“驯服FM”
MainLobeDuration
- - - - - -<年代p一个n我te米prop="purpose">主瓣持续时间年代p一个n>1
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>依赖关系
FrequencyPulse财产
双
RolloffFactor
- - - - - -<年代p一个n我te米prop="purpose">转出的因素年代p一个n>0.2
(默认)|<年代p一个n我te米prop="inputvalue">范围[0,1]中的标量年代p一个n>依赖关系
FrequencyPulse财产
双
BandwidthTimeProduct
- - - - - -<年代p一个n我te米prop="purpose">高斯脉冲形状的带宽和符号时间的乘积年代p一个n>0.3
(默认)|<年代p一个n我te米prop="inputvalue">积极的标量年代p一个n>依赖关系
FrequencyPulse财产
双
PulseLength
- - - - - -<年代p一个n我te米prop="purpose">频率脉冲形状长度年代p一个n>1
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>双
SymbolPrehistory
- - - - - -<年代p一个n我te米prop="purpose">史前象征年代p一个n>1
(默认)|<年代p一个n我te米prop="inputvalue">标量年代p一个n>|<年代p一个n我te米prop="inputvalue">向量年代p一个n>ModulationOrder- 1), (
PulseLength- 1)。
双
InitialPhaseOffset
- - - - - -<年代p一个n我te米prop="purpose">初始相位偏移年代p一个n>0
(默认)|<年代p一个n我te米prop="inputvalue">标量年代p一个n>双
SamplesPerSymbol
- - - - - -<年代p一个n我te米prop="purpose">每个输入符号的样本数年代p一个n>8
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>双
TracebackDepth
- - - - - -<年代p一个n我te米prop="purpose">维特比算法的回溯深度年代p一个n>16
(默认)|<年代p一个n我te米prop="inputvalue">正整数年代p一个n>双
OutputDataType
- - - - - -<年代p一个n我te米prop="purpose">输出数据类型年代p一个n>“双”
(默认)|<年代p一个n我te米prop="inputvalue">“逻辑”
|<年代p一个n我te米prop="inputvalue">“int8”
|<年代p一个n我te米prop="inputvalue">“int16”|<年代p一个n我te米prop="inputvalue">
“int32”
BitOutput财产
使用
描述
y
= cpmdemod (<一个href="#d123e123423" class="intrnllnk">x)
对输入信号采用CPM解调方法并返回解调信号。
输入参数
x- - - - - -<年代p一个n我te米prop="purpose">CPM-modulated信号年代p一个n>
列向量年代p一个n>
调制的cpm信号,指定为长度等于的整数倍的列向量<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SamplesPerSymbol财产。
数据类型:年代trong>双|单
输出参数
y-输出信号列向量|矩阵年代p一个n>
输出信号,以列向量或矩阵形式返回。若要指定对象以整数或位的形式输出值,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产。要指定输出数据类型,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">OutputDataType财产。
描述
y
= cpmdemod (<一个href="#d123e123423" class="intrnllnk">x)
对输入信号采用CPM解调方法并返回解调信号。
对输入信号采用CPM解调方法并返回解调信号。
y
= cpmdemod (<一个href="#d123e123423" class="intrnllnk">x)
输入参数
x- - - - - -<年代p一个n我te米prop="purpose">CPM-modulated信号年代p一个n>
列向量年代p一个n>
调制的cpm信号,指定为长度等于的整数倍的列向量<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SamplesPerSymbol财产。
数据类型:年代trong>双|单
x- - - - - -<年代p一个n我te米prop="purpose">CPM-modulated信号年代p一个n>
列向量年代p一个n>
列向量年代p一个n>
调制的cpm信号,指定为长度等于的整数倍的列向量<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 数据类型:年代trong>SamplesPerSymbol财产。
双|
输出参数
y-输出信号列向量|矩阵年代p一个n>
输出信号,以列向量或矩阵形式返回。若要指定对象以整数或位的形式输出值,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产。要指定输出数据类型,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">OutputDataType财产。
y-输出信号列向量|矩阵年代p一个n>
输出信号,以列向量或矩阵形式返回。若要指定对象以整数或位的形式输出值,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产。要指定输出数据类型,请使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">
OutputDataType财产。
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源
发行版(obj)
例子
基于灰度映射和位输入的CPM信号调制解调
创建CPM调制器和CPM解调器系统对象。
cpmmodulator = com . cpmmodulator (8,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitInput”年代p一个n>,真的,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“SymbolMapping”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“灰色”年代p一个n>);cpmdemodulator = com . cpmdemodulator (8,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitOutput”年代p一个n>,真的,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“SymbolMapping”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“灰色”年代p一个n>);
创建一个错误率计算器System对象™,用于解释由Viterbi算法引起的延迟。
delay = log2(cpm解调器. modulationorder)<年代p一个n年代tyle="color:#0000FF">...年代p一个n>* cpmdemodulator.TracebackDepth;errorRate = com . errorRate (<年代p一个n年代tyle="color:#A020F0">“ReceiveDelay”年代p一个n>、延迟);
传输100个3位字,打印错误率结果。
为年代p一个n>Counter = 1:100 data = randi([0 1],300,1);modSignal = cpmmodulator(data);noisyssignal = awgn(modSignal,0);receivedData = cpmdemodulator(noisyssignal);errorStats = errorRate(数据,receivedData);<年代p一个n年代tyle="color:#0000FF">结束年代p一个n>流(<年代p一个n年代tyle="color:#A020F0">错误率= %f\n错误数= %d\n年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>errorStats errorStats (1), (2))
错误率= 0.004006错误数= 120
应用GFSK调制和解调
使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmmodulator-system-object.html" data-docid="comm_ref#bsnan5g_15" class="a">comm.CPMModulator而且<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" data-docid="comm_ref#bsnan5g_7" class="a">comm.CPMDemodulator系统对象,应用高斯频移键控(GFSK)调制和解调随机位数据。
创建一个GFSK调制器和解调器对。
gfskMod = com . cpmmodulator (<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationOrder”年代p一个n>2,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“FrequencyPulse”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“高斯”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BandwidthTimeProduct”年代p一个n>, 0.5,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationIndex”年代p一个n>, 1<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitInput”年代p一个n>,真正的);gfskDemod = com . cpmdemodulator (<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationOrder”年代p一个n>2,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“FrequencyPulse”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“高斯”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BandwidthTimeProduct”年代p一个n>, 0.5,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationIndex”年代p一个n>, 1<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitOutput”年代p一个n>,真正的);
生成随机位数据并应用GFSK调制。使用散点图来查看星座。
numSym = 100;x = randi([0 1],numSym*gfskMod.SamplesPerSymbol,1);y = gfskMod(x);eyediagram (y, 16)
解调gfsk调制数据。为了验证解调后的信号数据与原始数据相等,需要考虑GFSK调制解调过程中高斯滤波引入的延迟。
z = gfskDemod(y);延迟= finddelay(x,z);isequal (x (1: end-delay)、z(延迟+ 1:结束)
ans =<年代p一个nclass="emphasis">逻辑1
基于灰度映射和位输入的CPM信号调制解调
创建CPM调制器和CPM解调器系统对象。
cpmmodulator = com . cpmmodulator (8,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitInput”年代p一个n>,真的,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“SymbolMapping”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“灰色”年代p一个n>);cpmdemodulator = com . cpmdemodulator (8,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitOutput”年代p一个n>,真的,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“SymbolMapping”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“灰色”年代p一个n>);
创建一个错误率计算器System对象™,用于解释由Viterbi算法引起的延迟。
delay = log2(cpm解调器. modulationorder)<年代p一个n年代tyle="color:#0000FF">...年代p一个n>* cpmdemodulator.TracebackDepth;errorRate = com . errorRate (<年代p一个n年代tyle="color:#A020F0">“ReceiveDelay”年代p一个n>、延迟);
传输100个3位字,打印错误率结果。
为年代p一个n>Counter = 1:100 data = randi([0 1],300,1);modSignal = cpmmodulator(data);noisyssignal = awgn(modSignal,0);receivedData = cpmdemodulator(noisyssignal);errorStats = errorRate(数据,receivedData);<年代p一个n年代tyle="color:#0000FF">结束年代p一个n>流(<年代p一个n年代tyle="color:#A020F0">错误率= %f\n错误数= %d\n年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>errorStats errorStats (1), (2))
错误率= 0.004006错误数= 120
应用GFSK调制和解调
使用<一个href="//www.tatmou.com/help/comm/ref/comm.cpmmodulator-system-object.html" data-docid="comm_ref#bsnan5g_15" class="a"> 创建一个GFSK调制器和解调器对。
生成随机位数据并应用GFSK调制。使用散点图来查看星座。
解调gfsk调制数据。为了验证解调后的信号数据与原始数据相等,需要考虑GFSK调制解调过程中高斯滤波引入的延迟。
comm.CPMModulator而且<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" data-docid="comm_ref#bsnan5g_7" class="a">
comm.CPMDemodulator系统对象,应用高斯频移键控(GFSK)调制和解调随机位数据。
gfskMod = com . cpmmodulator (<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationOrder”年代p一个n>2,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“FrequencyPulse”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“高斯”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BandwidthTimeProduct”年代p一个n>, 0.5,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationIndex”年代p一个n>, 1<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitInput”年代p一个n>,真正的);gfskDemod = com . cpmdemodulator (<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationOrder”年代p一个n>2,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“FrequencyPulse”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“高斯”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BandwidthTimeProduct”年代p一个n>, 0.5,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“ModulationIndex”年代p一个n>, 1<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“BitOutput”年代p一个n>,真正的);
numSym = 100;x = randi([0 1],numSym*gfskMod.SamplesPerSymbol,1);y = gfskMod(x);eyediagram (y, 16)
z = gfskDemod(y);延迟= finddelay(x,z);isequal (x (1: end-delay)、z(延迟+ 1:结束)
ans =<年代p一个nclass="emphasis">逻辑1
更多关于
CPM解调方法
CPM解调方法过程由一个相关器和一个极大似然序列检测器(MLSD)组成,该检测器通过状态网格搜索路径以寻找最小欧氏距离路径。当调制指数为有理数时(h =米 /p )时,符号中存在有限个相态。实现中使用Viterbi算法进行MLSD。
{h 我}是调制指标的序列,它在一组指标中循环移动{h 0年代ub>,h 1年代ub>,h 2年代ub>、……h H-1年代ub>}。
h我=米 我/p 我年代ub>是适当有理形式的调制指数。
米我是调制指数的分子。
p我是调制指数的分母。
米我而且p 我都是相对素数。
的最小公倍数(LCM<年代p一个nclass="inlineequation">{p 0年代ub>,p 1年代ub>,p 2年代ub>、……p H-1年代ub>}年代p一个n>表示为p .
h我=米 '<年代ub>我/p .
{h 我}决定相态的数量,
并影响格子态的数量,
numStates=numPhaseStates ×米 (l 1)年代up>,
l是脉冲长度。
米是调制顺序。
CPM方法
解调器的输入是调制信号的基带表示:
{α 我的序列米 -从字母表中选择的数据符号±1,±3,±(米 1)。
米一定要有表格2吗<年代up>k对于某个正整数k ,在那里米 是调制顺序,并指定符号字母的大小。
{h 我}是调制指标序列,和h 我在一组索引中循环移动{h 0年代ub>,h 我,h 2年代ub>、……h H-1年代ub>}。当H =1,只存在一个调制指标,h 0年代ub>,表示为h .
脉冲形状滤波
CPM方法使用脉冲整形来平滑调制信号的相变。这个函数问 (t )为频率脉冲得到的相位响应,g (t ),通过此关系:<年代p一个nclass="inlineequation">
.
的指定频率脉冲形状对应于这些脉冲形状表达式g (t ).
脉冲波形
表达式
矩形
提出了余弦
谱上升余弦
高斯
驯服调频(驯服调频)
l主要年代ub>是以符号间隔为单位的主瓣脉冲持续时间。
β是谱上升余弦的滚转因子。
Bb年代ub>为带宽与高斯脉冲的乘积。
脉冲的持续时间,LT ,是以符号间隔为单位的脉冲长度。由表达式定义,谱凸起余弦、高斯和驯服的调频脉冲形状具有无限长的长度。出于实际目的,LT 指定截断的有限长度。
有关脉冲形状滤波的更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">[1]一个>.
整数值和二进制值输出信号
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产假 :
该对象输出一个长度为的整数列向量N /<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SamplesPerSymbol,在那里N 是输入信号的长度,表示输入基带调制符号的个数。输出值为奇数,取值范围为[- (<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder1), (ModulationOrder 1)]。
您不能设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">OutputDataType财产“逻辑” .
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产真正的 :
该对象输出一个长度等于的二进制列向量<年代p一个nclass="inlineequation">k×(N /SamplesPerSymbol )年代p一个n>,在那里<年代p一个nclass="inlineequation">k= log2 (ModulationOrder )年代p一个n>而且N 是输入基带调制符号的个数(具体来说,是输入信号的长度)。的<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SymbolMapping属性确定对象如何映射范围[0,ModulationOrder - 1] tok -length位字。二进制字映射选项是自然二进制编码排序或灰色编码排序。
您可以设置OutputDataType 属性仅用于“双” 或“逻辑” .
对象遵循这个过程。
将每个解调符号映射为奇数l 在范围[- (ModulationOrder 1), (ModulationOrder 1)]。
地图l 到非负整数(l +ModulationOrder 1) / 2。
将每个非负整数映射到ak -length二进制字。类指定的二进制字映射选项是自然二进制编码排序或灰色编码排序<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SymbolMapping财产。
回溯深度和输出延迟
回溯深度是用于构造每个回溯路径的网格分支的数量。回溯深度影响输出延迟,输出延迟是在输出中第一个有意义的解调值之前的零符号的数量。
最佳回溯深度设置依赖于最小平方欧几里得距离计算。属性选择一个典型值,这取决于状态的数量five-times-the-constraint-length 规则,对应于<年代p一个nclass="inlineequation">5日志<年代ub>2年代ub>(numStates )年代p一个n>.
对于脉冲长度为3和的二元凸起余弦脉冲形状h =2/3,应用此规则<年代p一个nclass="inlineequation">(5日志<年代ub>2年代ub>(3×2<年代up>2年代up>) = 18年代p一个n>给出一个接近最优值20的结果。
CPM解调方法
CPM解调方法过程由一个相关器和一个极大似然序列检测器(MLSD)组成,该检测器通过状态网格搜索路径以寻找最小欧氏距离路径。当调制指数为有理数时(h =米 /p )时,符号中存在有限个相态。实现中使用Viterbi算法进行MLSD。
{h 我}是调制指标的序列,它在一组指标中循环移动{h 0年代ub>,h 1年代ub>,h 2年代ub>、……h H-1年代ub>}。
h我=米 我/p 我年代ub>是适当有理形式的调制指数。
米我是调制指数的分子。
p我是调制指数的分母。
米我而且p 我都是相对素数。
的最小公倍数(LCM<年代p一个nclass="inlineequation">{p 0年代ub>,p 1年代ub>,p 2年代ub>、……p H-1年代ub>}年代p一个n>表示为p .
h我=米 '<年代ub>我/p .
{h 我}决定相态的数量,
并影响格子态的数量,
numStates=numPhaseStates ×米 (l 1)年代up>,
l是脉冲长度。
米是调制顺序。
CPM解调方法过程由一个相关器和一个极大似然序列检测器(MLSD)组成,该检测器通过状态网格搜索路径以寻找最小欧氏距离路径。当调制指数为有理数时(
{ h我= 米我是调制指数的分子。 p我是调制指数的分母。 米我而且 的最小公倍数(LCM<年代p一个nclass="inlineequation">{ h我= {
并影响格子态的数量,
numStates= l是脉冲长度。 米是调制顺序。
CPM方法
解调器的输入是调制信号的基带表示:
{α 我的序列米 -从字母表中选择的数据符号±1,±3,±(米 1)。
米一定要有表格2吗<年代up>k对于某个正整数k ,在那里米 是调制顺序,并指定符号字母的大小。
{h 我}是调制指标序列,和h 我在一组索引中循环移动{h 0年代ub>,h 我,h 2年代ub>、……h H-1年代ub>}。当H =1,只存在一个调制指标,h 0年代ub>,表示为h .
解调器的输入是调制信号的基带表示:
{
α 我的序列米 -从字母表中选择的数据符号±1,±3,±(米 1)。米一定要有表格2吗<年代up>k对于某个正整数
k ,在那里米 是调制顺序,并指定符号字母的大小。{
h 我}是调制指标序列,和h 我在一组索引中循环移动{h 0年代ub>,h 我,h 2年代ub>、……h H-1年代ub>}。当H =1,只存在一个调制指标,h 0年代ub>,表示为h .
脉冲形状滤波
CPM方法使用脉冲整形来平滑调制信号的相变。这个函数问 (t )为频率脉冲得到的相位响应,g (t ),通过此关系:<年代p一个nclass="inlineequation">
.
的指定频率脉冲形状对应于这些脉冲形状表达式g (t ).
脉冲波形
表达式
矩形
提出了余弦
谱上升余弦
高斯
驯服调频(驯服调频)
l主要年代ub>是以符号间隔为单位的主瓣脉冲持续时间。
β是谱上升余弦的滚转因子。
Bb年代ub>为带宽与高斯脉冲的乘积。
脉冲的持续时间,LT ,是以符号间隔为单位的脉冲长度。由表达式定义,谱凸起余弦、高斯和驯服的调频脉冲形状具有无限长的长度。出于实际目的,LT 指定截断的有限长度。
有关脉冲形状滤波的更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">[1]一个>.
CPM方法使用脉冲整形来平滑调制信号的相变。这个函数
的指定频率脉冲形状对应于这些脉冲形状表达式
脉冲波形 | 表达式 |
---|---|
矩形 | |
提出了余弦 | |
谱上升余弦 | |
高斯 | |
驯服调频(驯服调频) |
l主要年代ub>是以符号间隔为单位的主瓣脉冲持续时间。
β是谱上升余弦的滚转因子。
Bb年代ub>为带宽与高斯脉冲的乘积。
脉冲的持续时间,
LT ,是以符号间隔为单位的脉冲长度。由表达式定义,谱凸起余弦、高斯和驯服的调频脉冲形状具有无限长的长度。出于实际目的,LT 指定截断的有限长度。
有关脉冲形状滤波的更多信息,请参见<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">[1]一个>.
整数值和二进制值输出信号
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产假 :
该对象输出一个长度为的整数列向量N /<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SamplesPerSymbol,在那里N 是输入信号的长度,表示输入基带调制符号的个数。输出值为奇数,取值范围为[- (<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">ModulationOrder1), (ModulationOrder 1)]。
您不能设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">OutputDataType财产“逻辑” .
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产真正的 :
该对象输出一个长度等于的二进制列向量<年代p一个nclass="inlineequation">k×(N /SamplesPerSymbol )年代p一个n>,在那里<年代p一个nclass="inlineequation">k= log2 (ModulationOrder )年代p一个n>而且N 是输入基带调制符号的个数(具体来说,是输入信号的长度)。的<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SymbolMapping属性确定对象如何映射范围[0,ModulationOrder - 1] tok -length位字。二进制字映射选项是自然二进制编码排序或灰色编码排序。
您可以设置OutputDataType 属性仅用于“双” 或“逻辑” .
对象遵循这个过程。
将每个解调符号映射为奇数l 在范围[- (ModulationOrder 1), (ModulationOrder 1)]。
地图l 到非负整数(l +ModulationOrder 1) / 2。
将每个非负整数映射到ak -length二进制字。类指定的二进制字映射选项是自然二进制编码排序或灰色编码排序<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">SymbolMapping财产。
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 该对象输出一个长度为的整数列向量 您不能设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk">BitOutput财产
SamplesPerSymbol,在那里
ModulationOrder1), (
OutputDataType财产
当你设置<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 该对象输出一个长度等于的二进制列向量<年代p一个nclass="inlineequation">k×( 的<一个href="//www.tatmou.com/help/comm/ref/comm.cpmdemodulator-system-object.html" class="intrnllnk"> 您可以设置 对象遵循这个过程。
将每个解调符号映射为奇数 地图 将每个非负整数映射到aBitOutput财产
SymbolMapping属性确定对象如何映射范围[0,
SymbolMapping财产。
回溯深度和输出延迟
回溯深度是用于构造每个回溯路径的网格分支的数量。回溯深度影响输出延迟,输出延迟是在输出中第一个有意义的解调值之前的零符号的数量。
最佳回溯深度设置依赖于最小平方欧几里得距离计算。属性选择一个典型值,这取决于状态的数量five-times-the-constraint-length 规则,对应于<年代p一个nclass="inlineequation">5日志<年代ub>2年代ub>(numStates )年代p一个n>.
对于脉冲长度为3和的二元凸起余弦脉冲形状h =2/3,应用此规则<年代p一个nclass="inlineequation">(5日志<年代ub>2年代ub>(3×2<年代up>2年代up>) = 18年代p一个n>给出一个接近最优值20的结果。
回溯深度是用于构造每个回溯路径的网格分支的数量。回溯深度影响输出延迟,输出延迟是在输出中第一个有意义的解调值之前的零符号的数量。
最佳回溯深度设置依赖于最小平方欧几里得距离计算。属性选择一个典型值,这取决于状态的数量
对于脉冲长度为3和的二元凸起余弦脉冲形状
参考文献
[1]<年代p一个n>安德森,约翰·B,托尔·奥林,卡尔·埃里克·桑德伯格。数字相位调制 .纽约:全会出版社,1986年。年代p一个n>
[1]<年代p一个n>安德森,约翰·B,托尔·奥林,卡尔·埃里克·桑德伯格。
扩展功能
C/ c++代码生成使用MATLAB®Coder™生成C和c++代码。年代p一个n>
使用注意事项和限制:年代p一个n>
看到<一个href="//www.tatmou.com/help/coder/ug/use-system-objects-in-matlab-code-generation.html" class="a">系统对象在MATLAB代码生成一个>(MATLAB编码器)年代p一个n>.
C/ c++代码生成使用MATLAB®Coder™生成C和c++代码。年代p一个n>
使用注意事项和限制:年代p一个n>
看到<一个href="//www.tatmou.com/help/coder/ug/use-system-objects-in-matlab-code-generation.html" class="a">系统对象在MATLAB代码生成一个>(MATLAB编码器)年代p一个n>.
版本历史
另请参阅
对象
comm.CPMModulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.CPFSKDemodulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.MSKDemodulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.GMSKDemodulator
块
comm.CPMModulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.CPFSKDemodulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.MSKDemodulator
|<年代p一个n我te米年代cope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">comm.GMSKDemodulator
块
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择网站
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:<年代trong class="recommended-country">.
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。