主要内容

通信EVM

测量误差矢量大小

描述

这个通信EVM(误差矢量幅值)系统对象™ 测量受损信号的调制器或解调器性能。

测量误差矢量大小:

  1. 定义并设置EVM对象。请参阅建设

  2. 呼叫根据特性来测量调制器或解调器的性能通信EVM.的行为特定于工具箱中的每个对象。

笔记

从R2016b开始,而不是使用方法执行System对象定义的操作时,可以使用参数调用对象,就像调用函数一样。例如,y=阶跃(obj,x)y = obj (x)执行等效操作。

建设

EVM=通信EVM创建错误向量幅值对象,维生素.该指标测量被调制信号的损伤量。

EVM=通信EVM(名称,价值)创建一个维生素对象,将每个指定的属性设置为指定的值。可以以任意顺序指定其他名称-值对参数,如(名称1,价值1,...,,瓦伦).

实例:('ReferenceSignalSource','Estimated from reference constellation')创建一个对象,维生素,通过使用参考星座来测量接收信号的RMS EVM。

性质

归一化

归一化方法

EVM计算中使用的归一化方法,具体为:“平均参考信号功率”(默认),“平均星座功率”,或“星座峰值功率”

AverageConstellationPower

平均星座功率

平均星座功率,以瓦特为单位指定为正实标量。此属性在以下情况下可用:归一化“平均星座功率”。默认值为1.

峰值通信功率

星座峰值功率

峰值星座功率,以瓦特为单位指定为正实标量。此属性在以下情况下可用:归一化“星座峰值功率”。默认值为1.

ReferenceSignalSource

参考信号来源

参考信号源,指定为“输入端口”(默认)或“根据参考星座估计”.若要提供用于测量输入信号的显式参考信号,请将此属性设置为“输入端口”.要根据参考星座测量输入信号的EVM,请将此属性设置为“根据参考星座估计”

ReferenceConstellation

参考星座

参考星座,指定为矢量。属性时,此属性可用ReferenceSignalSource属性是“根据参考星座估计”

默认值是(0.7071 - 0.7071;-0.7071 - 0.7071我;-0.7071 + 0.7071我;0.7071 + 0.7071我],对应于标准QPSK星座图。您可以使用调制函数或对象导出星座图点。例如,要导出16-QAM信号的参考星座图,您可以使用卡姆莫德(0:15,16)

MeasurementIntervalSource

测量间隔源

测量间隔源,指定为下列之一:“输入长度”(默认),“整个历史”,“自定义”,或'自定义与定期重置'.此属性仅影响RMS和最大EVM输出。

  • 若要仅使用当前样本计算EVM,请将此属性设置为“输入长度”

  • 要计算所有样本的EVM,请将此属性设置为“整个历史”

  • 要在指定的时间间隔内计算EVM并使用滑动窗口,请将此属性设置为“自定义”

  • 要在指定的时间间隔内计算EVM,并在每次填充测量时间间隔时重置对象,请将此属性设置为'自定义与定期重置'

MeasurementInterval

测量间隔

计算EVM的测量间隔,在样本中指定为实正整数。此属性在以下情况下可用:MeasurementIntervalSource“自定义”'自定义与定期重置'。默认值为One hundred.

AveragingDimensions

平均尺寸

平均要对EVM测量值进行平均的维度,指定为整数或整数的行向量,元素值在[1,3]范围内。例如,要跨行平均,请将此属性设置为2.。默认值为1.

该对象在发生平均的维度金宝app上支持可变大小的输入。但是,非平均维度的输入大小必须在对象调用之间保持不变。例如,如果输入有大小(4 3 2)平均尺寸[1 3],则输出大小为(1 3 (1),第二个维度必须保持固定在3.

MaximumEVMOutputPort

最大EVM测量输出端口

最大EVM测量输出端口,指定为逻辑标量。要为最大EVM测量值创建输出端口,请将此属性设置为真正的。默认值为错误的

XPercentileEVMOutputPort

X-百分位EVM测量输出端口

X-百分位EVM测量输出端口,指定为逻辑标量。为创建输出端口的步骤X-百分位EVM测量值,将此属性设置为真正的.这个X-百分位EVM测量值将持续到重置对象。这些测量值是通过使用自上次重置以来的所有输入帧来计算的。默认值是错误的

XPercentileValue

X-百分位值

X-百分比值低于X%的EVM测量值,指定为来自0One hundred.。此属性在以下情况下可用:XPercentileEVMOutputPort真正的。默认值为95

SymbolCountOutputPort

符号计数输出端口

符号计数输出端口,指定为逻辑标量。输出用于计算X-百分位EVM测量值,将此属性设置为真正的。此属性在以下情况下可用:XPercentileEVMOutputPort真正的。默认值为错误的

方法

测量误差矢量大小
对所有系统对象通用
释放

允许系统对象属性值改变

重置

重置System对象的内部状态

例子

全部崩溃

创建一个EVM对象。使用名称-值对将其配置为输出最大EVM、第90百分位EVM和符号计数。

evm=通信evm(“MaximumEVMOutputPort”,真的,...“XPercentileEVMOutputPort”,真的,“XPercentileValue”,90,...“SymbolCountOutputPort”,对);

生成随机数据符号。应用16-QAM调制。调制信号用作后续EVM测量的参考。

数据=randi([0 15],1000,1);refSym=qammod(数据,16,“UnitAveragePower”,对);

将调制后的信号通过AWGN通道传递。

rxSym=awgn(参考文献20);

测量噪声信号的EVM。

[rmsEVM,maxEVM,pctEVM,numSym]=evm(refSym,rxSym)
rmsEVM=9.8775
maxEVM=26.8385
pctEVM=14.9750
numSym = 1000

生成滤波QAM数据并通过AWGN信道。计算符号错误率,并估计接收信号的EVM。

创建通道和过滤器系统对象™。

M=16;refConst=qammod(0:M-1,M);channel=comm.AWGNChannel(“噪音法”,“信噪比”,...“信噪比”,15,“SignalPower”10);txfilter = comm.RaisedCosineTransmitFilter (“OutputSamplesPerSymbol”,4);rxfilter=comm.RaisedCosineReceiveFilter(“InputSamplesPerSymbol”,4,...“决策因素”,4);

创建EVM对象以输出RMS和最大EVM测量值。

evm=通信evm(“MaximumEVMOutputPort”,真的,...“引用信号源”,“根据参考星座估计”,...“ReferenceConstellation”, refConst);

创建一个错误率对象,并通过发送和接收过滤器说明信号延迟。对于滤波器,群延迟等于滤波器符号所有物

rxd = (txfilter。FilterSpanInSymbols + rxfilter.FilterSpanInSymbols) / 2;errorRate = comm.ErrorRate (“ReceiveDelay”,rxd);

执行以下通道操作:

  • 生成随机数据符号。

  • 应用16-QAM调制。

  • 通过提高余弦Tx滤波器过滤调制数据。

  • 通过AWGN信道传递传输的信号。

  • 通过升余弦接收滤波器过滤接收到的数据。

  • 解调滤波后的数据。

txData = randi([0 15],1000,1);modData = qammod (txData, M);txSig = txfilter (modData);rxSig =通道(txSig);filtSig = rxfilter (rxSig);rxData = qamdemod (filtSig, M);

计算错误统计信息并显示符号错误率。

errStats=errorRate(txData,rxData);symerrate=errStats(1)
symErrRate = 0.0222

测量和显示收到的RMS EVM和最大EVM值。考虑过滤器延迟,删除第一个rxd+1符号。由于存在符号错误,EVM可能不完全准确。

[rmsEVM, maxEVM] =维生素(filtSig (rxd + 1:结束)
rmsEVM=17.2966
maxEVM=40.1595

生成随机数据符号,并应用8-PSK调制。

D = randi([0 7],2000,1);txSig = pskmod (d, 8,π/ 8);

将调制后的信号通过AWGN通道传递。

rxSig=awgn(txSig,30);

创建一个EVM对象。以传输信号为参考,测量RMS EVM。

evm=comm.evm;rmsEVM1=evm(txSig,rxSig);

释放EVM对象。配置对象以根据参考星座估计接收信号的EVM。

释放维生素(维生素)。REferenceSignalSource =“根据参考星座估计”;维生素。REferenceConstellation = pskmod(0:7,8,pi/8);

仅使用接收信号作为输入测量RMS EVM。验证其与使用参考信号时获得的结果相匹配。

rmsEVM2=evm(rxSig);[rmsEVM1 rmsEVM2]
ans=1×23.1524 - 3.1524

使用两种定制测量间隔测量8-PSK信号的EVM。显示结果。

设置帧数,M,以及每帧的子帧数,K

M=2;K=5;

设置子帧中的符号数。计算相应的帧长度。

sfLen = 100;frmLen = K * sfLen
frmLen = 500

创建EVM对象。将对象配置为使用等于帧长度的自定义测量间隔。

evm1=通信EVM(“MeasurementIntervalSource”,“自定义”,...“测量神经”, frmLen);

配置对象使用8-PSK参考星座测量EVM。

evm1。REferenceSignalSource =“根据参考星座估计”evm1.referenceconstelling=pskmod(0:7,8,pi/8);

创建EVM对象,并将其配置为使用500符号测量间隔和定期重置。配置对象以使用8-PSK参考星座测量EVM。

evm2=通信EVM(“MeasurementIntervalSource”,'自定义与定期重置',...“测量神经”, frmLen);evm2。REferenceSignalSource =“根据参考星座估计”evm2.referenceconstelling=pskmod(0:7,8,pi/8);

初始化EVM和信号噪声数组。

rmsEVM1 = 0 (K、M);rmsEVM2 = 0 (K、M);snrdB = 0 (K、M);

使用两个对象测量8-PSK噪声信号的EVM。从一帧到另一帧信噪比增加1db。为evm1,最近的500个符号用于计算估计值。在这种情况下,使用滑动窗口,以便始终处理整个数据帧。对于evm2,每次遇到新帧时,符号都会被清除。

对于m = 1: m对于k=1:k data=randi([07],sfLen,1);txSig=pskmod(data,8,pi/8);snrdB(k,m)=k+(m-1)*k+7;rxSig=awgn(txSig,snrdB(k,m));rmsEVM1(k,m)=evm1(rxSig);rmsEVM2(k,m)=evm2(rxSig);终止终止

显示使用两种方法测量的EVM。第一种情况下使用的窗口提供子帧的平均值。第二种情况下,EVM对象在第一帧后重置,以便计算的EVM值更准确地反映当前SNR。

楼梯(snrdB(:),[rmsEVM1(:)rmsEVM2(:)])xlabel(“信噪比(dB)”) ylabel ('维生素(%)')传奇(“无重置”,“定期重置”)

图中包含一个轴对象。axis对象包含2个楼梯类型的对象。这些对象表示不重置、周期性重置。

创建OFDM调制解调器和解调器对象。

ofdmmod = comm.OFDMModulator (“FFTLength”,32,“NumSymbols”,4); ofdmdemod=通信OFDMDemodulator(“FFTLength”,32,“NumSymbols”,4);

确定OFDM信号中的子载波和符号数。

ofdmDims=信息(ofdmmod);numSC=ofdmDims.DataInputSize(1)
numSC = 21
numSym = ofdmDims.DataInputSize (2)
numSym=4

生成随机符号并应用QPSK调制。

msg = randi([0 3],numSC,numSym);modSig = pskmod(味精4π/ 4);

OFDM调制QPSK信号。通过AWGN通道传递信号。解调噪声信号。

txSig = ofdmmod (modSig);rxSig = awgn (txSig 10“测量”);demodSig = ofdmdemod (rxSig);

创建一个EVM对象,其中结果在子载波上平均。测量EVM。有四个条目对应于4个OFDM符号中的每一个。

evm=通信evm(“平均尺寸”,1);rmsEVM=evm(解调信号,调制信号)
rmsEVM=1×427.4354 23.6279 22.6772 23.1699

覆盖EVM对象,其中结果在OFDM符号上被平均。测量维生素。21个子载波对应21个条目。

evm=通信evm(“平均尺寸”2);rmsEVM =维生素(demodSig modSig)
rmsEVM=21×128.8225 17.8536 18.6809 20.8872 22.3532 24.7197 30.1954 33.4899 36.2847 21.4230 ⋮

测量子载波和OFDM符号上的EVM和平均值。

evm=通信evm(“平均尺寸”,[1 2]);rmsEVM=evm(解调信号,调制信号)
rmsEVM=24.2986

计算并绘制OFDM信号的EVM。信号由两个间隔的包组成。

创建系统对象以:

  • OFDM调制信号

  • 引入相位噪声

  • 绘制时变信号

ofdmmod = comm.OFDMModulator (“FFTLength”,256,“NumSymbols”2);pnoise = comm.PhaseNoise (“水平”,-60,“FrequencyOffset”, 20岁,“采样器”, 1000);tscope = timescope (“YLabel”,'维生素(%)',“YLimits”,[0 40],...“采样器”,1000,“时间跨度源”,“财产”,“时间跨度”, 1.2,...“ShowGrid”,对);

创建EVM对象。要生成EVM的时变估计值,请设置AveragingDimensions财产2.

evm=通信evm(“MaximumEVMOutputPort”假的,...“引用信号源”,“输入端口”,...“平均尺寸”2);

确定OFDM调制器的输入数据尺寸。

modDims=info(ofdmod)
modDims=struct,带字段:DataInputSize:[245 2]OutputSize:[544 1]

为第一个数据包创建QPSK调制的随机数据。应用OFDM调制。

数据=randi([03],modDims.DataInputSize);qpskssig=pskmod(数据,4,pi/4);txSig1=ofdmod(qpskssig);

创建第二个数据包。

数据=随机数([0 3],modDims.DataInputSize);qpskSig=pskmod(数据,4,pi/4);txSig2=ofdmmod(qpskSig);

连接两个包并包含一个不传输任何东西的间隔。

txSig = [txSig1;0 (112 1);txSig2];

对发射信号施加I/Q振幅和相位不平衡。

rxSigIQimb=iqimbal(txSig,2,5);

运用相位噪声。

rxSig=pnoise(rxSigIQimb);

测量接收信号的EVM,并绘制其时变EVM。

e =维生素(txSig rxSig);tscope (e)

算法

EVM块和EVM对象都提供了三种归一化方法。您可以根据参考信号的平均功率、星座的平均功率或星座的峰值功率对测量进行归一化。不同的行业标准遵循这些标准化方法之一。

块或对象计算每个归一化方法的RMS EVM值不同。

维生素与归一化法 算法
参考信号

E v M R M s = 1. N K = 1. N ( E K ) 1. N K = 1. N ( K 2. + Q K 2. ) * One hundred.

平均功率

E v M RMS ( % ) = One hundred. 1. N K = 1. N ( E K ) P 平均值

峰值功率

E v M RMS ( % ) = One hundred. 1. N K = 1. N ( E K ) P 马克斯

地点:

  • EK= E K = ( K ˜ K ) 2. + ( Q K Q ˜ K ) 2.

  • K是突发中第k个符号的同相测量

  • QK是突发中第k个符号的正交相位测量

  • N输入向量的长度是多少

  • P平均值是平均星座功率

  • P马克斯顶峰是星座的力量吗

  • KQK表示理想(参考)值。 ˜ K Q ˜ K 表示测量(接收)的符号。

最大EVM是指帧或帧内的最大EVM值 维生素 马克斯 = 马克斯 K [ 1. , ... , N ] { 维生素 K } , 其中k是长度突发中的第k个符号N

EVM的定义K根据您选择的用于计算测量值的标准化方法而有所不同。块或对象支持这些算法。金宝app

维生素与规范化 算法
参考信号

E v M K = E K 1. N K = 1. N ( K 2. + Q K 2. ) * One hundred.

平均功率

E v M K = One hundred. E K P 平均值

峰值功率

E v M K = One hundred. E K P 马克斯

块或对象将计算X-通过创建所有传入数据的直方图来确定EVM百分比维生素K值。输出提供EVM值,低于该值的EVM值为X%。

扩展能力

介绍了R2012a