将各种RF损伤应用于QAM信号。通过使用星座图,时变误差矢量幅度(EVM)图和频谱图来观察效果。估计等效的信噪比(SNR)。
设置采样率,调制顺序和SNR。计算参考星座点。
FS = 1000;m = 16;SNRDB = 30;Refconst = Qammod(0:M-1,M,'onemaveragepower',真的);
创建星座图和时间范围对象以可视化损伤效果。
constdiagram = comm.constellationdiagram('ReferenceConstellation',Refconst);timescope = timescope('ylimits',[0 40],'采样率',fs,'timespansource'那'财产'那'时间跨度',1,......'showgrid',真的,'ylabel'那'EVM(%)');
生成16 QAM信号,并通过AWGN通道。绘制它的星座。
数据= RANDI([0 m-1],1000,1);modsig = qammod(数据,m,'onemaveragepower',真的);noisysig = awgn(modsig,snrdb);Constdiagram(Noisysig)
从参考星座点估计噪声信号的EVM。
EVM = comm.evm('referenceignalsource'那'从参考星座估计'那......'ReferenceConstellation',Refconst,......'正常化'那'平均星座力量');Rmsevm = EVM(Noisysig)
RMSEVM = 3.1768.
调制错误率(MER)与SNR紧密相对应。创建一个MET对象,并估计SNR。
mer = comm.mer('referenceignalsource'那'从参考星座估计'那......'ReferenceConstellation',Refconst);snrest = mer(noisysig)
snrest = 30.1071
估计非常接近30 dB的指定SNR。
使用“内存非线性对象”创建放大器。
amp = comm.memorylessnoninearity('IIP3',38,'ampmconversion',0);
通过非线性放大器通过调制信号并绘制其星座图。
txsig =放大器(modsig);Constdiagram(TXSIG)
由于放大器增益压缩,星座的角点已经朝向原点移动。
引入小AM / PM转换,并显示接收的信号星座。
amp.ampmconversvers = 1;txsig =放大器(modsig);Constdiagram(TXSIG)
由于AM / PM转换,星座已经旋转。要计算时变的EVM,请释放EVM对象并设置AverageDimensions
属性为2.估算EVM对输入信号,省略参考值
财产定义。该方法产生更准确的结果。
EVM = comm.evm('verigesdimensions',2);EVMTIME = EVM(MODSIG,TXSIG);
绘制变形信号的时变EVM。
Timescope(EVMTIME)
计算RMS EVM。
EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 35.5919.
计算mer。
mer = comm.mer;snrest = mer(modsig,txsig)
snrest = 8.1392
由于放大器失真,SNR(≈8dB)从其初始值(∞)降低。
指定输入功率电平,范围为0到40 dBm。将这些级别转换为在W的线性等效项中。初始化输出电源向量。
PowerIn = 0:40;PIN = 10. ^((PowerIn-30)/ 10);powerout = zeros(长度(powerin),1);
测量输入功率水平范围的放大器输出功率。
为了K = 1:长度(PowerIN)数据= RANDI([0 15],1000,1);txsig = qammod(数据,16,'onemaveragepower',true)* sqrt(pin(k));ampsig =放大器(TXSIG);Powerout(k)= 10 * log10(var(放示))+ 30;结尾
绘制电源输出与电源输入曲线。
图绘图(PowerIn,PowerOut,PowerIn,PowerIn,' - ') 传奇(“放大器输出”那'理想的输出'那'地点'那'se')Xlabel('电力(dbm)')ylabel('强大(DBM)') 网格
输出功率电平为30 dBm。放大器对输入功率水平显示出大于25 dBm的非线性行为。
使用振幅和相位不平衡对调制信号应用iqimbal.
功能。
Ampimb = 3;phimb = 10;rxsig = iqimbal(modsig,ampimb,phimb);
绘制收到的星座。
Constdiagram(rxsig)
由于I / Q不平衡,星座的幅度和相位发生了变化。
计算和绘制时变EVM。
EVMTIME = EVM(MODSIG,RXSIG);Timescope(EVMTIME)
EVM表现出类似于与非线性放大器经历的行为,尽管方差较小。
创建一个具有1000 Hz采样率的100 Hz正弦波。
sinewave = dsp.sinewave('频率',100,'采样率',1000,......'samplesperframe',1E4,'ComplexOutput',真的);x = sinewave();
应用相同的3 dB和10度I / Q不平衡。
Ampimb = 3;phimb = 10;y = iqimbal(x,ampimb,phimb);
绘制不平衡信号的频谱。
Spectrum = DSP.SpectRumanalyzer('采样率',1000,'PowerUnit'那'dbw');光谱(Y)
I / Q不平衡在-100 Hz引入了第二个音调,这是输入音的倒数。
将相位噪声应用于发送信号。绘制得到的星座图。
pnoise = comm.phaseNoise('等级',-50,'surformoffset'20,'采样率',fs);pnoisesig = pnoise(modsig);Constdiagram(PNOISEIG)
相位噪声引入旋转抖动。
计算并绘制接收信号的EVM。
EVMTIME = EVM(MODSIG,PNOISIGE);Timescope(EVMTIME)
确定RMS EVM。
EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 6.1989.
指定每个符号参数的示例。创建一对凸起的余弦匹配过滤器。
SPS = 4;txfilter = comm.raisedcosinetransmitfilter('rollofffactor',0.2,'filterspaninsymbols',8,......'OutputSamplespersymbol',sps,'获得',sqrt(sps));rxfilter = comm.raisedcosinereceivefilter('rollofffactor',0.2,'filterspaninsymbols',8,......'inputsamplespersymbol',sps,'获得',1 / sqrt(sps),......'decimationfactor',sps);
通过匹配过滤器确定延迟。
fltdelay = 0.5 *(txfilter.filterspaninsymbols + rxfilter.filterspaninsymbols);
通过匹配的滤波器将调制信号传递。
filtsig = txfilter(modsig);rxsig = rxfilter(filtsig);
要考虑延迟过滤器,请先丢弃第一个fltdelay.
样品。
rxsig = rxsig(fltdelay + 1:结束);
为了适应接收信号样本数量的变化,创建新的星座图和时间范围对象。
constdiagram = comm.constellationdiagram('ReferenceConstellation',Refconst);timescope = timescope('ylimits',[0 40],'采样率',fs,'timespansource'那'财产'那'时间跨度',1,......'showgrid',真的,'ylabel'那'EVM(%)');
估计EVM。绘制接收的信号星座图和时变EVM。
EVM = comm.evm('referenceignalsource'那'从参考星座估计'那......'ReferenceConstellation',Refconst,......'正常化'那'平均星座力量'那'verigesdimensions',2);EVMTIME = EVM(rxsig);Constdiagram(rxsig)
Timescope(EVMTIME)
确定RMS EVM。
EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 2.7199.
确定等效的SNR。
mer = comm.mer;snrest = mer(modsig(1:end-fltdelay),rxsig)
snrest = 31.4603.
结合滤波器,非线性放大器,AWGN和相位噪声的影响。显示星座和EVM图。
创建EVM,时间范围和星座图对象。
EVM = comm.evm('referenceignalsource'那'从参考星座估计'那......'ReferenceConstellation',Refconst,......'正常化'那'平均星座力量'那'verigesdimensions',2);timescope = timescope('ylimits',[0 40],'采样率',fs,'timespansource'那'财产'那'时间跨度',1,......'showgrid',真的,'ylabel'那'EVM(%)');constdiagram = comm.constellationdiagram('ReferenceConstellation',Refconst);
指定非线性放大器和相位噪声对象。
amp = comm.memorylessnoninearity('IIP3',45,'ampmconversion',0);pnoise = comm.phaseNoise('等级',-55,'surformoffset'20,'采样率',fs);
过滤器,然后放大调制信号。
txfiltout = txfilter(modsig);txsig =放大器(txfiltout);
添加相位噪声。通过AWGN通道通过受损信号。绘制星座图。
rxsig = awgn(txsig,snrdb);iqimbalsig = iqimbal(rxsig,ampimb,phimb);pnoisesig = pnoise(iqimbalsig);rxfiltout = rxfilter(pnoisesig);Constdiagram(rxfiltout)
计算时变的EVM。绘制结果。
EVMTIME = EVM(rxfiltout);Timescope(EVMTIME)
确定RMS EVM。
EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 19.4992
估计SNR。
mer = comm.mer('referenceignalsource'那'从参考星座估计'那......'ReferenceConstellation',Refconst);snrest = mer(rxfiltout)
snrest = 14.1996.
此值比指定值为30 dB的6 dB大约为6 dB,这意味着其他损伤的效果是显着的,并且会降低误码率性能。