主要内容

comm.EVM

测量误差矢量大小

描述

comm.EVM(误差矢量量级)系统对象™测量受损信号的调制器或解调器性能。

测量误差矢量大小:

  1. 定义和设置EVM对象。看到建设

  2. 调用一步根据的性质来测量调制器或解调器的性能comm.EVM.的行为一步特定于工具箱中的每个对象。

请注意

从R2016b开始,而不是使用一步方法来执行System对象定义的操作,您可以调用带有参数的对象,就像调用函数一样。例如,Y = step(obj,x)而且Y = obj(x)执行等效操作。

建设

EVM = com .EVM创建一个误差矢量大小对象,维生素.该对象测量调制信号中的损伤量。

= com .EVM(的名字价值创建一个维生素对象,并将每个指定的属性设置为指定的值。可以以任意顺序指定附加的名称-值对参数,如(Name1Value1,...,).

例子EVM = com .EVM('ReferenceSignalSource','从参考星座估计')创建一个对象,维生素,该方法使用参考星座测量接收信号的RMS EVM。

属性

归一化

归一化法

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

AverageConstellationPower

平均星座功率

平均星座功率,以瓦为正实标量。此属性在归一化“平均星座功率”.默认为1

PeakConstellationPower

星座功率峰值

星座功率峰值,以瓦为正实标量。此属性在归一化“星座能量峰值”.默认为1

ReferenceSignalSource

参考信号源

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

ReferenceConstellation

参考星座

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

默认为[0.7071 - 0.7071i;-0.7071 - 0.7071i;-0.7071 + 0.7071i;0.7071 + 0.7071i],对应一个标准的QPSK星座。可以通过使用调制函数或对象派生星座点。例如,要获得16-QAM信号的参考星座,您可以使用qammod (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]而且平均尺寸3 [1],输出大小为[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真正的.默认为

方法

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

允许系统对象属性值更改

重置

重置系统对象的内部状态

例子

全部折叠

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

evm = com . evm (“MaximumEVMOutputPort”,真的,...“XPercentileEVMOutputPort”,真的,“XPercentileValue”, 90,...“SymbolCountOutputPort”,真正的);

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

Data = randi([0 15],1000,1);refSym = qammod(data,16,“UnitAveragePower”,真正的);

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

rxSym = awgn(refSym,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 = com . awgnchannel (“NoiseMethod”信噪比(SNR)...“信噪比”15岁的“SignalPower”10);txfilter = com . raisedcosinetransmitfilter (“OutputSamplesPerSymbol”4);rxfilter = com . raisedcosinereceivefilter (“InputSamplesPerSymbol”4...“DecimationFactor”4);

创建一个EVM对象来输出RMS和最大EVM度量值。

evm = com . evm (“MaximumEVMOutputPort”,真的,...“ReferenceSignalSource”“从参考星座估计”...“ReferenceConstellation”, refConst);

创建一个错误率对象,并通过发送和接收过滤器说明信号延迟。对于一个滤波器,组延迟等于1/2FilterSpanInSymbols财产。

RXD = (txfilter.)FilterSpanInSymbols + rxfilter.FilterSpanInSymbols)/2;= com . errorRate (“ReceiveDelay”, rxd);

请执行以下通道操作:

  • 生成随机数据符号。

  • 应用16-QAM调制。

  • 通过凸起的余弦Tx滤波器对调制数据进行滤波。

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

  • 通过凸起的余弦Rx过滤器过滤接收到的数据。

  • 解调过滤后的数据。

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

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

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

测量并显示接收到的RMS EVM和最大EVM值。将过滤延迟考虑在内,删除第一个rxd + 1符号。因为有符号错误,EVM可能不完全准确。

[rmsEVM,maxEVM] = evm(filtSig(rxd+1:end))
rmsEVM = 17.2966
maxEVM = 40.1595

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

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

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

rxSig = awgn(txSig,30);

创建一个EVM对象。以发射信号为参考,测量有效值EVM。

evm = com . 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。显示结果。

设置帧数,,每帧的子帧数,K

M = 2;K = 5;

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

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

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

evm1 = com . evm (“MeasurementIntervalSource”“自定义”...“MeasurementInterval”, frmLen);

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

evm1。ReferenceSignalSource =“从参考星座估计”;evm1。ReferenceConstellation = pskmod(0:7,8,pi/8);

创建一个EVM对象,并配置它使用500个符号的测量间隔,并定期重置。配置对象使用8-PSK参考星座来测量EVM。

evm2 = com . evm (“MeasurementIntervalSource”“自定义定期重置”...“MeasurementInterval”, frmLen);evm2。ReferenceSignalSource =“从参考星座估计”;evm2。ReferenceConstellation = pskmod(0:7,8,pi/8);

初始化EVM和信噪比数组。

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

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

m = 1: mk = 1: k data = randi([0 7],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值更准确地反映当前的信噪比。

stairs(snrdB(:),[rmsEVM1(:) rmsEVM2(:)])“信噪比(dB)”) ylabel ('维生素(%)')传说(“不重置”“周期性重置”

图中包含一个axes对象。坐标轴对象包含两个stair类型的对象。这些对象表示不复位,周期性复位。

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

ofdmmod = com . ofdmmodulator (“FFTLength”32岁的“NumSymbols”4);ofdmdemod = com . ofdmdemoator (“FFTLength”32岁的“NumSymbols”4);

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

ofdmdim = info(ofdmmod);numSC = ofdmdim . datainputsize (1)
numSC = 21
numSym = ofdmdim . datainputsize (2)
numSym = 4

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

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

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

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

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

evm = com . evm (“AveragingDimensions”1);rmsEVM = evm(demodSig,modSig)
rmsEVM =1×427.4354 23.6279 22.6772 23.1699

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

evm = com . evm (“AveragingDimensions”2);rmsEVM = evm(demodSig,modSig)
rmsEVM =21日×128.8225 17.8536 18.6809 20.8872 22.3532 24.7197 30.1954 33.4899 36.2847 21.4230

测量EVM并对子载波和OFDM符号进行平均。

evm = com . evm (“AveragingDimensions”[1, 2]);rmsEVM = evm(demodSig,modSig)
rmsEVM = 24.2986

计算并绘制OFDM信号的EVM。该信号由两个被间隔隔开的数据包组成。

创建系统对象以:

  • OFDM调制信号

  • 引入相位噪声

  • 绘制时变信号图

ofdmmod = com . ofdmmodulator (“FFTLength”, 256,“NumSymbols”2);pnoise = com . phasenoise (“水平”, -60,“FrequencyOffset”, 20岁,“SampleRate”, 1000);Tscope = timescope(“YLabel”'维生素(%)'“YLimits”, 40 [0],...“SampleRate”, 1000,“TimeSpanSource”“属性”“时间间隔”, 1.2,...“ShowGrid”,真正的);

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

evm = com . evm (“MaximumEVMOutputPort”假的,...“ReferenceSignalSource”输入端口的...“AveragingDimensions”2);

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

modDims = info(ofdmmod)
modDims = struct with fields: DataInputSize: [245 2] OutputSize: [544 1]

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

data = randi([0 3], moddim . datainputsize);qpskSig = pskmod(data,4,pi/4);txSig1 = ofdmmod(qpskSig);

创建第二个数据包。

data = randi([0 3], moddim . datainputsize);qpskSig = pskmod(data,4,pi/4);txSig2 = ofdmmod(qpskSig);

连接两个数据包并包含一个没有任何传输的间隔。

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

将I/Q振幅和相位不平衡应用于传输信号。

rxSigIQimb = iqimbal(txSig,2,5);

应用相位噪声。

rxSig = pnoise(rxsigiqim);

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

e = evm(txSig,rxSig);tscope (e)

算法

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

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

EVM归一化方法 算法
参考信号

E V R 年代 1 N k 1 N e k 1 N k 1 N k 2 + k 2 One hundred.

平均功率

E V RMS One hundred. 1 N k 1 N e k P avg

峰值功率

E V RMS One hundred. 1 N k 1 N e k P 马克斯

地点:

  • ek e k k ˜ k 2 + k ˜ k 2

  • k脉冲中第KTH符号的同相测量是吗

  • k是KTH符号的正交相位测量吗

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

  • Pavg是平均星座功率吗

  • P马克斯星座功率峰值是多少

  • k而且k表示理想(参考)值。 ˜ k 而且 ˜ k 表示测量(接收)的符号。

最大EVM是一帧或一帧的最大EVM值 维生素 马克斯 马克斯 k 1 ... N 维生素 k 哪里k是第KTH个符号N

EVM的定义k取决于您为计算测量选择的归一化方法。块或对象支持这些算法。金宝app

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

E V k e k 1 N k 1 N k 2 + k 2 One hundred.

平均功率

E V k One hundred. e k P avg

峰值功率

E V k One hundred. e k P 马克斯

块或对象计算X-百分位EVM通过创建一个直方图的所有传入维生素k值。输出提供了低于X% EVM值的EVM值。

扩展功能

在R2012a中介绍